Дано выражение: CASE WHEN status = 'paid' THEN amount ELSE 0 END. Что вернётся, если status = NULL и amount = 500?

ANULL
B0
C500
DОшибка, потому что status = NULL
Правильный ответ. Если условие WHEN даёт не TRUE (включая UNKNOWN из-за NULL), сработает ELSE.

Разбор

При status = NULL сравнение status = 'paid' возвращает UNKNOWN. В CASE ветка WHEN выбирается только при TRUE. Так как условие не TRUE, будет выбран ELSE 0. Поэтому результат — 0, даже если amount = 500. Чтобы явно обработать пропуск, можно добавить ветку WHEN status IS NULL THEN ....

Проверь себя · 1/3разбор после ответа
Нужно посчитать выручку по заказу как price * quantity, где quantity может быть NULL (не заполнили). По бизнес-правилу NULL нужно считать как 1. Какое выражение корректнее?
Тренировать SQL в Telegram

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