Аналитик пишет: SELECT clicks / NULLIF(views, 0) AS ctr FROM campaigns. Зачем здесь используется NULLIF(views, 0)?

AВыражение NULLIF вернёт NULL вместо views, если views равен 0, и тогда деление даст NULL, а не ошибку.
BВыражение NULLIF заменит NULL в столбце views на 0, чтобы деление всегда возвращало конкретное число.
CВыражение NULLIF вернёт 0 вместо views, если views равен NULL, чтобы обеспечить безопасное деление.
DВыражение NULLIF вернёт ошибку, если views равен 0, чтобы заранее предотвратить некорректный расчёт ctr.
Правильный ответ. NULLIF(a, b) возвращает NULL, если a = b, иначе возвращает a. Это защищает от деления на ноль.

Разбор

NULLIF(views, 0) вернёт NULL, если views равен 0, и само значение views в остальных случаях. Деление на NULL в SQL возвращает NULL (а не ошибку), поэтому строки с нулём просмотров получат NULL в столбце ctr вместо ошибки деления на ноль. Это стандартный защитный паттерн при расчёте метрик.

Можно заниматься бесплатно

Готовим вопросы…

Три вопроса по теме этой страницы, с объяснениями.

Продолжить в браузере

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