Нужно оставить только внешних пользователей: исключить тех, у кого is_internal = 1 OR is_bot = 1. Какой фильтр корректен?
A
NOT (is_internal = 1) OR NOT (is_bot = 1)B
is_internal = 0 OR is_bot = 0C
NOT (is_internal = 1 AND is_bot = 1)D
NOT (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?Ещё вопросы по теме «Булева логика и фильтры»
- Какому выражению со скобками эквивалентно условие `is_new = 1 OR is_paying = 1 AND has_coupon = 1`, если `AND` выполняется раньше `OR`?
- В фильтре написали `country = 'RU' AND device = 'ios' OR device = 'android'`. Какой набор строк реально пройдёт фильтр при стандартном приоритете, где `AND` сильнее `OR`?
- Какое условие эквивалентно `NOT (is_paying = 1 AND has_subscription = 1)` по правилу `De Morgan`?
- Вы хотите выбрать строки, которые не относятся к `country = 'RU' OR country = 'KZ'`. Какое выражение соответствует `NOT (country = 'RU' OR country = 'KZ')` по правилу `De Morgan`?
- В таблице пользователей есть флаги `has_email_optin` и `has_push_optin` (0 или 1). Нужно выбрать пользователей, у которых включён ровно один канал (email или push, но не оба). Какое условие корректно?
- Все вопросы по «Булева логика и фильтры» →