В таблице sessions 5 строк. Значения utm_source: 'google', NULL, 'email', NULL, NULL. Чему равны COUNT(*) и COUNT(utm_source)?
A
COUNT(*) = 5, COUNT(utm_source) = 2B
COUNT(*) = 2, COUNT(utm_source) = 5C
COUNT(*) = 5, COUNT(utm_source) = 5D
COUNT(*) = 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?Ещё вопросы по теме «Выражения и NULL»
- Нужно выбрать пользователей без email. Какое условие в `WHERE` корректно найдёт строки, где `email` отсутствует (равен `NULL`)?
- В таблице `orders` поле `promo_code` может быть `NULL`. Что произойдёт со строкой, где `promo_code` = `NULL`, при фильтре `WHERE promo_code <> 'NONE'`?
- В таблице `payments` три строки со значениями `amount`: `NULL`, `NULL`, `NULL`. Что вернут запросы `SELECT SUM(amount)` и `SELECT SUM(COALESCE(amount, 0))`?
- Что вернёт выражение `COALESCE(NULL, NULL, 'web', 'app')`?
- Дано выражение: `CASE WHEN status = 'paid' THEN amount ELSE 0 END`. Что вернётся, если `status` = `NULL` и `amount` = 500?
- Все вопросы по «Выражения и NULL» →