Есть логика сегментации: CASE WHEN age IS NULL THEN 'unknown' WHEN age < 18 THEN 'minor' ELSE 'adult' END. Что вернётся для строки, где значение age равно NULL?
A
'minor'B
'adult'C
NULLD
'unknown'Правильный ответ. В
CASE пропуски удобно обрабатывать явной веткой через проверку IS NULL, иначе строка попадёт в ELSE без нужного смысла.Разбор
Проверка age IS NULL для пропущенного возраста истинна, поэтому первая ветка срабатывает и вернётся 'unknown'. Это типичный паттерн в аналитике: сначала обрабатываем пропуски (чтобы не терять строки и не смешивать смысл), затем ветвим по числовым значениям. Без явной ветки для NULL строка попадёт в ELSE и будет ошибочно отнесена к 'adult', что искажает сегментацию.
Проверь себя · 1/3разбор после ответа
В выражении
CASE ветки проверяются сверху вниз. Что вернёт CASE WHEN amount IS NULL THEN 'missing' WHEN amount = 0 THEN 'zero' ELSE 'positive' END для строки, где amount равен NULL?Ещё вопросы по теме «Выражения и NULL»
- Нужно выбрать пользователей без электронной почты. Какое условие в `WHERE` корректно найдёт строки, где `email` отсутствует?
- В таблице `orders` поле `promo_code` может быть `NULL`. Что произойдёт со строкой, где `promo_code = NULL`, при фильтре `WHERE promo_code <> 'NONE'`?
- В таблице `sessions` 5 строк. Значения `utm_source`: `'google'`, `NULL`, `'email'`, `NULL`, `NULL`. Чему равны `COUNT(*)` и `COUNT(utm_source)`?
- В таблице `payments` три строки со значениями `amount`: `NULL`, `NULL`, `NULL`. Что вернут запросы `SELECT SUM(amount)` и `SELECT SUM(COALESCE(amount, 0))`?
- Что вернёт выражение `COALESCE(NULL, NULL, 'web', 'app')`?
- Все вопросы по «Выражения и NULL» →