АгрегатыНачальный
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';Связанные термины
Анекдоты по теме
— Чем отличается COUNT() от COUNT(колонка)? COUNT() считает всех, даже если у кого-то всё пустое. COUNT(колонка) считает только тех, у кого в этой колонке что-то написано.
— Что вернёт AVG(salary) если все зарплаты NULL? — NULL. — А SUM? — NULL. — А COUNT(salary)? — 0. COUNT считает непустые, их нет. — А COUNT(*)? — Количество строк. Это COUNT строк, не значений.
Почему агрегатные функции любят GROUP BY? Потому что без него они считают всю таблицу, а с ним — маленькие уютные группки. Как семья вместо коммуналки.