Есть таблица orders(created_at, amount), где created_at имеет тип timestamp. Как посчитать выручку по месяцам?
A
SELECT DATE_TRUNC('month', created_at) AS m, SUM(amount) FROM orders GROUP BY DATE_TRUNC('month', created_at);B
SELECT DATE_TRUNC('month', created_at) AS m, amount FROM orders GROUP BY DATE_TRUNC('month', created_at);C
SELECT DATE_TRUNC('month', created_at) AS m, SUM(amount) FROM orders ORDER BY DATE_TRUNC('month', created_at);D
SELECT DATE_TRUNC('day', created_at) AS m, SUM(amount) FROM orders GROUP BY DATE_TRUNC('month', created_at);Правильный ответ. Для метрик по периодам вычислите бакет через
DATE_TRUNC и агрегируйте с GROUP BY по этому бакету.Разбор
Чтобы получить выручку по месяцам, сформируйте месячный бакет DATE_TRUNC('month', created_at) и посчитайте SUM(amount). В GROUP BY нужно повторить то же выражение, что используется для бакета. Без агрегата SUM будет просто список заказов, а с днём в SELECT и месяцем в GROUP BY запрос вернёт ошибку или некорректный результат.
Проверь себя · 1/3разбор после ответа
Нужно построить график регистраций по часам из таблицы пользователей со столбцом
created_at типа timestamp. Какой бакет лучше использовать?Ещё вопросы по теме «Даты и время»
- В таблице `events(user_id, created_at)` поле `created_at` имеет тип отметки времени с долями секунд. Как корректно посчитать количество событий по дням?
- В таблице `events(created_at)` нужно выбрать события за последние 7 дней с точностью до текущего момента (включая сегодняшние, ещё не завершённые сутки). Какое условие в `WHERE` корректнее?
- Как получить начало текущей недели (недельный бакет) по текущей дате в PostgreSQL?
- Колонка `created_at` имеет тип `timestamp`. Какой тип данных вернёт `DATE_TRUNC('day', created_at)`?
- В таблице `events(user_id, created_at)` колонка `created_at` типа `timestamptz` (события записаны в UTC). Нужно посчитать DAU по дням в часовом поясе Москвы и не зависеть от часового пояса сессии. Какой бакет правильный?
- Все вопросы по «Даты и время» →