В таблице пользователей есть флаги has_email_optin и has_push_optin (0 или 1). Нужно выбрать пользователей, у которых включён ровно один канал (email или push, но не оба). Какое условие корректно?
A
(has_email_optin = 1 AND NOT (has_push_optin = 1)) OR (NOT (has_email_optin = 1) AND has_push_optin = 1)B
has_email_optin = 1 AND has_push_optin = 1, что выбирает пользователей с обоими включёнными каналами связиC
has_email_optin = 1 OR has_push_optin = 1, что выбирает пользователей хотя бы с одним включённым флагомD
NOT (has_email_optin = 1 AND has_push_optin = 1), что отбрасывает только случай с обоими включённымиПравильный ответ. «Ровно один» — это исключающее «или» (XOR): один флаг истинен, другой ложен.
Разбор
«Ровно один» — это исключающее «или» (XOR): один флаг истинен, другой ложен. Объединяем два взаимно исключающих случая через OR: (A AND NOT B) OR (NOT A AND B). Условие A AND B выберет только пользователей с обоими каналами, а A OR B — ещё и тех, у кого включены оба. NOT (A AND B) пропускает также случай, когда не выполнено ни одно условие.
Проверь себя · 1/3разбор после ответа
В сегмент «платящие и активные» должны попасть пользователи, у которых выполнены оба условия:
is_paying = 1 и is_active = 1. Какой фильтр соответствует слову «оба»?Ещё вопросы по теме «Булева логика и фильтры»
- Какому выражению со скобками эквивалентно условие `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)` по правилу де Моргана? Выберите запись через `OR`.
- Вы хотите выбрать строки, которые не относятся к `country = 'RU' OR country = 'KZ'`. Какое выражение соответствует `NOT (country = 'RU' OR country = 'KZ')` по правилу де Моргана?
- В сегмент нужно включить пользователей, у которых активен хотя бы один из флагов: `is_student = 1` или `has_coupon = 1`. Какое условие соответствует формулировке «хотя бы один»?
- Все вопросы по «Булева логика и фильтры» →