АгрегатыНачальный
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;
Связанные термины
Анекдоты по теме
— Что такое ROLLUP? — Групповая агрегация с промежуточными итогами. SELECT year, month, SUM(sales) FROM data GROUP BY ROLLUP(year, month); — Добавляет строки: итого за год и итого за всё. — Как сводная таблица в Excel? — Именно. Только в SQL.
— Что такое FILTER в агрегатах? — Агрегат с условием без подзапроса: SELECT COUNT(*) FILTER (WHERE status = 'paid') AS paid, COUNT(*) FILTER (WHERE status = 'pending') AS pending FROM orders; — Это как несколько WHERE в одном SELECT? — Именно. Чище, чем CASE WHEN.
Почему GROUP BY не зовут на дни рождения? Потому что он всех складывает в кучу и выдаёт по одному подарку на группу.