Для двух флагов used_card = 1 и used_paypal = 1 нужно выбрать пользователей, которые использовали exactly one способ оплаты. Какое условие соответствует этому, используя комбинацию OR, AND и NOT без перечисления двух кейсов?
A
used_card = 1 OR used_paypal = 1B
NOT (used_card = 1 OR used_paypal = 1)C
(used_card = 1 OR used_paypal = 1) AND NOT (used_card = 1 AND used_paypal = 1)D
used_card = 1 AND used_paypal = 1Правильный ответ.
exactly one можно записать как at least one AND NOT оба одновременно.Разбор
Первая часть (A OR B) гарантирует, что выполнено хотя бы одно условие. Вторая часть NOT (A AND B) запрещает ситуацию, когда истинны оба условия одновременно. В сочетании это даёт ровно один истинный флаг. Такая форма удобна, когда сами условия длинные и их не хочется дублировать в двух ветках.
Проверь себя · 1/3разбор после ответа
Поле
country содержит ровно одно значение на пользователя. Какое условие является always false?Ещё вопросы по теме «Булева логика и фильтры»
- Какому выражению со скобками эквивалентно условие `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, но не оба). Какое условие корректно?
- Все вопросы по «Булева логика и фильтры» →