В запросе используется выражение: SELECT user_id, CASE WHEN age < 18 THEN 'подросток' WHEN age < 30 THEN 'молодой' WHEN age < 50 THEN 'средний' ELSE 'старший' END AS segment FROM users. Пользователю 25 лет — какое значение он получит и почему?

AЗапрос вызовет ошибку, потому что CASE нельзя использовать внутри SELECT
BСтолбец segment будет содержать NULL для всех строк, если не указан ELSE
CСтолбец segment получит значение первого подходящего условия WHEN для каждой строки
DСтолбец segment получит значение последнего подходящего условия WHEN для каждой строки
Правильный ответ. CASE WHEN проверяет условия по порядку сверху вниз и возвращает результат первого истинного.

Разбор

Выражение CASE перебирает ветки WHEN последовательно. Для пользователя 25 лет первое условие age < 18 ложно, второе age < 30 истинно — он получит значение 'молодой'. Третье условие даже не проверяется. Этот порядок важен: если бы age < 50 стояло первым, пользователь попал бы в группу 'средний'.

Проверь себя · 1/3разбор после ответа
В запросе используется выражение: SELECT user_id, CASE WHEN age < 18 THEN 'подросток' WHEN age < 30 THEN 'молодой' WHEN age < 50 THEN 'средний' ELSE 'старший' END AS segment FROM users. Пользователю 25 лет — какое значение он получит и почему?
Тренировать SQL в Telegram

Ещё вопросы по теме «Основы SQL-запросов»