Нужно оставить только внешних пользователей: исключить тех, у кого is_internal = 1 OR is_bot = 1. Какой фильтр корректен?

ANOT (is_internal = 1) OR NOT (is_bot = 1)
Bis_internal = 0 OR is_bot = 0
CNOT (is_internal = 1 AND is_bot = 1)
DNOT (is_internal = 1 OR is_bot = 1)
Правильный ответ. Если «плохая группа» задана как is_internal = 1 OR is_bot = 1, то её исключение записывается как NOT (is_internal = 1 OR is_bot = 1).

Разбор

Чтобы исключить всех, кто удовлетворяет хотя бы одному из условий, сначала объединяют их через OR, а затем берут отрицание всей скобки. По De Morgan это эквивалентно NOT (is_internal = 1) AND NOT (is_bot = 1), что часто читается ещё яснее. Вариант NOT (A) OR NOT (B) слишком мягкий и оставляет пользователей, у которых выполнено одно из «плохих» условий.

Проверь себя · 1/3разбор после ответа
Какое условие эквивалентно NOT (is_paying = 1 AND has_subscription = 1) по правилу De Morgan?
Открыть Карьерник в Telegram

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