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

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

Разбор

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

Проверь себя · 1/3разбор после ответа
У пользователя first_name = ' Анна ' и last_name = ' Иванова ' (с лишними пробелами по краям). Что вернёт SELECT CONCAT(TRIM(first_name), ' ', TRIM(last_name))?
Тренировать SQL в Telegram

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