Есть логика сегментации: CASE WHEN age IS NULL THEN 'unknown' WHEN age < 18 THEN 'minor' ELSE 'adult' END. Что вернётся для строки, где значение age равно NULL?

A'minor'
B'adult'
CNULL
D'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?
Тренировать SQL в Telegram

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