АгрегатыНачальный
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(col) поспорили. COUNT(*): — Я считаю всех, даже пустых. COUNT(col): — Я считаю только тех, у кого есть значение. NULL в углу: — Меня никто не считает. COUNT(col): — Именно.
— Чем HAVING отличается от WHERE? — WHERE фильтрует строки ДО группировки. HAVING — ПОСЛЕ. — Как охранник на входе и на выходе? — Именно. И оба нужны.
— Что такое FILTER в агрегатах? — Агрегат с условием без подзапроса: SELECT COUNT(*) FILTER (WHERE status = 'paid') AS paid, COUNT(*) FILTER (WHERE status = 'pending') AS pending FROM orders; — Это как несколько WHERE в одном SELECT? — Именно. Чище, чем CASE WHEN.