COUNT

Базовый SQL
≈ 1 мин чтения

COUNT(*) считает строки

COUNT(*) возвращает количество строк в наборе, независимо от того, есть ли в отдельных столбцах NULL.

SELECT COUNT(*)
FROM users;

Если после WHERE осталось 42 строки, COUNT(*) вернёт 42.

COUNT(column) считает только известные значения

SELECT COUNT(email)
FROM users;

Такой вариант считает только строки, где email не равен NULL. Если пользователей 100, но email указан только у 73, результатом будет 73.

DISTINCT можно использовать внутри COUNT

SELECT COUNT(DISTINCT country)
FROM users;

Запрос считает количество различных известных значений country, а не количество пользователей.

COUNT(*) и COUNT(column) отвечают на разные вопросы. Первый считает строки, второй — ненулевые значения конкретного выражения. Разница особенно заметна, когда столбец допускает NULL.