В таблице sessions 5 строк. Значения utm_source: 'google', NULL, 'email', NULL, NULL. Чему равны COUNT(*) и COUNT(utm_source)?

ACOUNT(*) = 2, COUNT(utm_source) = 5: первый вариант пропускает NULL, второй учитывает все строки
BCOUNT(*) = 5, COUNT(utm_source) = 5: оба варианта считают одинаково и значение NULL не влияет на счёт
CCOUNT(*) = 2, COUNT(utm_source) = 2: оба варианта пропускают NULL и учитывают только не-NULL значения
DCOUNT(*) = 5, COUNT(utm_source) = 2: первый считает все строки, второй пропускает три значения NULL
Правильный ответ. COUNT(*) считает строки, а COUNT(column) считает только не-NULL значения в столбце.

Разбор

COUNT(*) считает количество строк, независимо от того, есть ли NULL в каких-либо полях. COUNT(utm_source) считает количество строк, где utm_source не равен NULL. В примере всего 5 строк, но только 2 значения не-NULL ('google' и 'email'), поэтому получаем COUNT(*) = 5 и COUNT(utm_source) = 2.

Проверь себя · 1/3разбор после ответа
Какой фильтр в WHERE корректно оставит только строки, где столбец channel задан (не равен NULL)?
Тренировать SQL в Telegram

Ещё вопросы по теме «Выражения и NULL»