Как сгруппировать заказы из таблицы orders(created_at) по кварталам с помощью DATE_TRUNC?
A
SELECT DATE_TRUNC('quarter', created_at) AS q, COUNT(*) FROM orders GROUP BY DATE_TRUNC('quarter', created_at);B
SELECT DATE_TRUNC('month', created_at) AS q, COUNT(*) FROM orders GROUP BY DATE_TRUNC('month', created_at);C
SELECT created_at + INTERVAL '3 months' AS q, COUNT(*) FROM orders GROUP BY created_at + INTERVAL '3 months';D
SELECT EXTRACT(QUARTER FROM created_at) AS q, COUNT(*) FROM orders GROUP BY EXTRACT(QUARTER FROM created_at);Правильный ответ.
DATE_TRUNC('quarter', ...) возвращает начало квартала и подходит для квартальных бакетов.Разбор
Для квартальной агрегации удобнее использовать DATE_TRUNC('quarter', created_at), потому что результат — конкретная дата/время начала квартала (например, 1 января или 1 апреля). Это лучше для последующих JOIN и сортировок, чем просто номер квартала без года.
Проверь себя · 1/3разбор после ответа
В таблице
events(user_id, created_at) колонка created_at типа timestamptz (события записаны в UTC). Нужно посчитать DAU по дням в таймзоне Москвы (и не зависеть от таймзоны сессии). Какой бакет правильный?Ещё вопросы по теме «Даты и время»
- В таблице `events(user_id, created_at)` поле `created_at` типа `timestamp`. Как посчитать количество событий по дням?
- Есть таблица `orders(created_at, amount)`, где `created_at` типа `timestamp`. Как посчитать выручку по месяцам?
- В таблице `events(created_at)` нужно выбрать события за последние 7 дней относительно текущего момента (`current_timestamp`). Какое условие в `WHERE` корректнее?
- Как получить начало текущей недели (недельный бакет) по текущей дате в PostgreSQL?
- Колонка `created_at` имеет тип `timestamp`. Какой тип данных вернёт `DATE_TRUNC('day', created_at)`?
- Все вопросы по «Даты и время» →