junior
В чем разница между COUNT(*) и COUNT(column)?
COUNT(*) подсчитывает общее количество строк в наборе, включая строки с NULL-значениями, поскольку оперирует записями, а не конкретными столбцами. COUNT(column) подсчитывает количество не-NULL значений в указанном столбце, пропуская строки, где этот столбец равен NULL.
Пример
-- Пример: таблица с 5 строками, в столбце bonus у двух строк NULL
-- COUNT(*) вернёт 5
-- COUNT(bonus) вернёт 3
SELECT
COUNT(*) AS total_rows, -- 5
COUNT(bonus) AS rows_with_bonus -- 3
FROM employees;
Дополнительно, COUNT(DISTINCT column) подсчитывает количество уникальных не-NULL значений. Выбор между COUNT(*) и COUNT(column) должен быть осознанным: если нужно общее количество строк — используйте COUNT(*), если нужно знать, сколько строк имеют заполненное значение — используйте COUNT(column).
На собеседовании: разница в обработке
NULL— это ключевой момент. Частая ошибка — использоватьCOUNT(column)для подсчёта всех строк, не учитывая, чтоNULL-строки будут пропущены.