АгрегатыНачальный
COUNT
Считает количество строк или непустых значений в группе.
Синтаксис
COUNT(*) | COUNT(column) | COUNT(DISTINCT column)Объяснение
COUNT(*) считает все строки включая NULL. COUNT(column) считает только строки где column IS NOT NULL. COUNT(DISTINCT column) — уникальные непустые значения.
COUNT всегда возвращает число (не NULL), даже если строк нет — вернёт 0.
Пример
SELECT
COUNT(*) AS total_rows,
COUNT(email) AS with_email,
COUNT(DISTINCT country) AS unique_countries
FROM users;Связанные термины
AVGВозвращает среднее арифметическое числовых значений. NULL игнорируются.GROUP BYГруппирует строки с одинаковыми значениями для применения агрегатных функций.NULL / IS NULLNULL означает отсутствие значения. Для проверки используется IS NULL, а не = NULL.SUM / AVG / MIN / MAXАгрегатные функции для вычисления суммы, среднего, минимума и максимума числовых значений.
Анекдоты по теме
— Чем отличается COUNT() от COUNT(колонка)? COUNT() считает всех, даже если у кого-то всё пустое. COUNT(колонка) считает только тех, у кого в этой колонке что-то написано.
— Что вернёт AVG(salary) если все зарплаты NULL? — NULL. — А SUM? — NULL. — А COUNT(salary)? — 0. COUNT считает непустые, их нет. — А COUNT(*)? — Количество строк. Это COUNT строк, не значений.
Почему HAVING обижается на WHERE? — Потому что WHERE фильтрует строки ДО группировки, а HAVING — ПОСЛЕ. WHERE думает, что он главный, а HAVING знает: истина где-то в агрегатах.