Сегмент задан условием is_paying = 1 OR has_trial = 1. Нужно выбрать пользователей, которые в этот сегмент НЕ входят. Какое условие корректно?

ANOT (is_paying = 1 OR has_trial = 1)
BNOT (is_paying = 1) OR NOT (has_trial = 1)
Cis_paying = 0 OR has_trial = 0
DNOT (is_paying = 1 AND has_trial = 1)
Правильный ответ. По закону де Моргана отрицание A OR B превращается в NOT A AND NOT B, что эквивалентно NOT (A OR B).

Разбор

«Не в сегменте» означает, что не выполняется ни один из двух признаков. Это записывается как NOT (is_paying = 1 OR has_trial = 1) или эквивалентно по закону де Моргана: NOT (is_paying = 1) AND NOT (has_trial = 1). Вариант с OR между отрицаниями слишком мягкий — он пропустит пользователей, у которых один из признаков всё ещё истинный. Отрицание AND сужает условие до тех, у кого выполнено только одно из двух, что тоже неверно.

Проверь себя · 1/3разбор после ответа
Какое условие эквивалентно NOT (is_paying = 1 AND has_subscription = 1) по правилу де Моргана? Выберите запись через OR.
Открыть Карьерник в Telegram

Ещё вопросы по теме «Булева логика и фильтры»