В выражении CASE проверки идут сверху вниз. Что вернёт CASE WHEN amount IS NULL THEN 'missing' WHEN amount = 0 THEN 'zero' ELSE 'positive' END для строки, где amount = NULL?
A
'zero'B
'positive'C
'missing'D
NULLПравильный ответ.
CASE выбирает первую подходящую ветку WHEN (где условие TRUE).Разбор
В CASE условия проверяются по порядку. Для amount = NULL условие amount IS NULL истинно (TRUE), поэтому сразу возвращается 'missing', и до следующих WHEN дело не дойдёт. Это важно при построении категорий: наиболее специфичные/важные случаи (часто IS NULL) удобно ставить выше.
Проверь себя · 1/3разбор после ответа
В таблице
payments три строки со значениями amount: NULL, NULL, NULL. Что вернут запросы SELECT SUM(amount) и SELECT SUM(COALESCE(amount, 0))?Ещё вопросы по теме «Выражения и NULL»
- Нужно выбрать пользователей без email. Какое условие в `WHERE` корректно найдёт строки, где `email` отсутствует (равен `NULL`)?
- В таблице `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» →