Есть таблица orders(created_at, amount), где created_at типа timestamp. Как посчитать выручку по месяцам?

ASELECT DATE_TRUNC('month', created_at) AS m, amount FROM orders GROUP BY m;
BSELECT DATE_TRUNC('month', created_at) AS m, SUM(amount) FROM orders;
CSELECT DATE_TRUNC('month', created_at) AS m, SUM(amount) FROM orders GROUP BY DATE_TRUNC('month', created_at);
DSELECT 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 нужно повторить то же выражение, что используется для бакета.

Проверь себя · 1/3разбор после ответа
Нужно отобрать события ровно за вчерашний календарный день по created_at типа timestamp, чтобы не задвоить границы при ежедневном запуске. Какое условие в WHERE лучше?
Тренировать SQL в Telegram

Ещё вопросы по теме «Даты и время»