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

ACOUNT(*) = 5, COUNT(utm_source) = 2
BCOUNT(*) = 2, COUNT(utm_source) = 5
CCOUNT(*) = 5, COUNT(utm_source) = 5
DCOUNT(*) = 2, COUNT(utm_source) = 2
Правильный ответ. 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разбор после ответа
Что вернёт выражение CASE WHEN is_active = 1 THEN 'active' END для строки, где is_active = 0?
Тренировать SQL в Telegram

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