АгрегатыНачальный
GROUP BY
Группирует строки с одинаковыми значениями для применения агрегатных функций.
Синтаксис
SELECT col, AGG(col2) FROM table GROUP BY col;
Объяснение
GROUP BY схлопывает группы строк в одну. В SELECT можно использовать только колонки из GROUP BY или агрегатные функции.
Порядок: WHERE (фильтр строк) → GROUP BY (группировка) → HAVING (фильтр групп) → SELECT.
Пример
-- Количество заказов и сумма по каждому пользователю SELECT user_id, COUNT(*) AS orders_count, SUM(total) AS total_spent FROM orders GROUP BY user_id ORDER BY total_spent DESC;
Связанные термины
Анекдоты по теме
— Чем отличается COUNT() от COUNT(колонка)? COUNT() считает всех, даже если у кого-то всё пустое. COUNT(колонка) считает только тех, у кого в этой колонке что-то написано.
Почему GROUP BY не зовут на дни рождения? Потому что он всех складывает в кучу и выдаёт по одному подарку на группу.
Аналитик пишет SUM(revenue) и получает NULL. Он в панике звонит DBA. DBA: проверь, есть ли NULL в колонке revenue. Аналитик: есть несколько. DBA: один NULL заражает всю сумму. Используй SUM(COALESCE(revenue, 0)).