АгрегатыНачальный
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;
Связанные термины
Анекдоты по теме
— Что такое ROLLUP? — Групповая агрегация с промежуточными итогами. SELECT year, month, SUM(sales) FROM data GROUP BY ROLLUP(year, month); — Добавляет строки: итого за год и итого за всё. — Как сводная таблица в Excel? — Именно. Только в SQL.
Что сказал агрегат SUM после того, как просуммировал колонку с NULL-ами? — Я их просто не заметил. Они для меня не существуют. Как бывших на свадьбе.
— Почему GROUP BY обижается, когда в SELECT есть колонка не из группировки? — Потому что не знает, какое значение выбрать из группы. Ему нужна определённость.