Есть выражение для маржи: revenue - cost. Что получится, если revenue = 1000, а cost = NULL? И какой вариант устойчиво вернёт 1000 при пропуске cost?

AРезультат 1000; устойчивый вариант: revenue - cost
BРезультат NULL; устойчивый вариант: revenue - COALESCE(cost, 0)
CРезультат 0; устойчивый вариант: COALESCE(revenue - cost, 0)
DРезультат NULL; устойчивый вариант: revenue - NULL
Правильный ответ. Любая арифметика с NULL даёт NULL; для подстановки используйте COALESCE до вычисления.

Разбор

Если один из операндов в арифметике равен NULL, результат выражения становится NULL, потому что значение неизвестно. Поэтому revenue - cost при cost = NULL даст NULL. Чтобы трактовать пропущенную себестоимость как 0 (частая аналитическая договорённость), заменяют её заранее: revenue - COALESCE(cost, 0). Это делает метрику устойчивой и предсказуемой.

Проверь себя · 1/3разбор после ответа
В таблице sessions 5 строк. Значения utm_source: 'google', NULL, 'email', NULL, NULL. Чему равны COUNT(*) и COUNT(utm_source)?
Тренировать SQL в Telegram

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