Как правильно считать количество. COUNT(*) или COUNT(column) — в чем разница?
Допустим, мы считаем количество продаж. Представим, что было 4 заявки, из которых только 3 оплачены. В скобках мы должны указать * или название колонки, и тут есть нюанс.
COUNT(*) — посчитает все строки, включая те, где данных нет. Если заявка создана, но оплаты нет (NULL), мы всё равно получим 4 «продажи».
COUNT(price) — посчитает только заполненные строки (без NULL). Тут мы получим верное значение, сколько на самом деле было оплат.
Другой пример с доставками: в таблице 100 строк. У 10 заказов еще не назначен курьер (там NULL). COUNT(*) покажет 100, а COUNT(courier_id) — 90.
Примеры очень простые, как и ошибка, которую легко совершить и испортить отчет, не зная эту разницу. Кратко: COUNT(*) — считает все строки. COUNT(column) — считает только НЕПУСТЫЕ строки.
Связи: 📌 В другой заметке писал, почему NULL и 0 — это не одно и то же
В этом посте были ссылки, но мы их удалили по правилам Сетки