В выражении CASE проверки идут сверху вниз. Что вернёт CASE WHEN amount IS NULL THEN 'missing' WHEN amount = 0 THEN 'zero' ELSE 'positive' END для строки, где amount = NULL?

A'zero'
B'positive'
C'missing'
DNULL
Правильный ответ. 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))?
Тренировать SQL в Telegram

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