Зачем нужна агрегация и что это такое
До сих пор мы получали строки, одна строка = одна запись. Агрегация позволяет из множества строк получить одно число.
Аналогия: агрегация, это итоги
Представь таблицу с продажами за год, тысячи строк. Тебе нужно знать:
- Сколько всего продаж?
- Какова общая выручка?
- Какой средний чек?
Никто не будет считать это вручную. Агрегатные функции делают это за секунды.
Что такое агрегатная функция
Агрегатная функция принимает множество значений и возвращает одно:
[100, 200, 150, 300, 250] → SUM → 1000
[100, 200, 150, 300, 250] → AVG → 200
[100, 200, 150, 300, 250] → MAX → 300
Разница между строчными и агрегатными функциями
Строчная функция, применяется к каждой строке отдельно:
SELECT UPPER(name) FROM users;
-- Результат: столько же строк сколько в таблице, только текст заглавными
Агрегатная функция, применяется ко всем строкам сразу, возвращает одну строку:
SELECT COUNT(*) FROM users;
-- Результат: одно число, количество пользователей
Когда нужна агрегация
Каждый раз когда задаёшь себе вопрос "сколько", "сколько всего", "какой средний", "какой максимальный", нужна агрегация.
- Сколько пользователей зарегистрировалось за месяц? → COUNT
- Какова общая выручка? → SUM
- Какой средний чек? → AVG
- Что самый дорогой товар? → MAX
- Что самый дешёвый? → MIN
Агрегация + WHERE
Агрегировать можно не всю таблицу, а только отфильтрованные строки:
-- Выручка только по завершённым заказам
SELECT SUM(amount)
FROM orders
WHERE status = 'completed';
Сначала WHERE отфильтрует строки, потом SUM посчитает сумму по оставшимся.
💡 Главная мысль: Агрегация, это когда из многих строк получаешь одно значение. Это основа аналитики: любые "итого", "в среднем", "максимум", агрегатные функции.