Есть два флага участия в экспериментах: in_ab_test = 1 и in_holdout = 1. Нужно выбрать пользователей, которые не находятся ни в одном из них. Какое условие корректно?

ANOT (in_ab_test = 1) OR NOT (in_holdout = 1)
Bin_ab_test = 0 OR in_holdout = 0
CNOT (in_ab_test = 1) AND NOT (in_holdout = 1)
DNOT (in_ab_test = 1 AND in_holdout = 1)
Правильный ответ. Фраза «ни в одном из них» для двух флагов означает NOT (in_ab_test = 1) AND NOT (in_holdout = 1).

Разбор

Чтобы пользователь не был ни в одном из сегментов, оба условия участия должны быть ложными одновременно, значит нужен AND. Ошибка — использовать OR: тогда достаточно, чтобы один флаг был ложным, и пользователь пройдёт, даже если другой флаг истинный. По De Morgan это также эквивалентно NOT (in_ab_test = 1 OR in_holdout = 1).

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

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