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