АгрегатыНачальный
SUM / AVG / MIN / MAX
Агрегатные функции для вычисления суммы, среднего, минимума и максимума числовых значений.
Синтаксис
SUM(col) | AVG(col) | MIN(col) | MAX(col)Объяснение
Все эти функции игнорируют NULL. Если все значения NULL — возвращают NULL (кроме COUNT).
AVG(col) = SUM(col) / COUNT(col). Оба игнорируют NULL, поэтому AVG может ввести в заблуждение — нули и NULL считаются по-разному.
Пример
SELECT
SUM(total) AS revenue,
AVG(total) AS avg_order,
MIN(total) AS min_order,
MAX(total) AS max_order
FROM orders
WHERE status = 'paid';Связанные термины
Анекдоты по теме
— Почему агрегатные функции ненавидят NULL? — Потому что COUNT() их считает, а SUM(колонка) — игнорирует. Двойные стандарты!
— STRING_AGG — это что? — Агрегирует строки через разделитель. SELECT user_id, STRING_AGG(tag, ', ') FROM user_tags GROUP BY user_id; — Превращает много строк в одну? — Да. Обратное нормализации. — А ARRAY_AGG? — То же самое, но возвращает массив вместо строки.
Почему HAVING обижается на WHERE? — Потому что WHERE фильтрует строки ДО группировки, а HAVING — ПОСЛЕ. WHERE думает, что он главный, а HAVING знает: истина где-то в агрегатах.