Вы хотите выбрать платящих пользователей из RU или KZ: is_paying = 1 и страна одна из двух. Какой вариант корректно выражает это без ошибки приоритета AND/OR?
A
country = 'RU' OR country = 'KZ' AND is_paying = 1B
(country = 'RU' OR country = 'KZ') AND is_paying = 1C
country = 'RU' AND country = 'KZ' AND is_paying = 1D
country = 'RU' OR (country = 'KZ' OR is_paying = 1)Правильный ответ. Чтобы блок
country = 'RU' OR country = 'KZ' не распался, его нужно взять в скобки перед AND с is_paying = 1.Разбор
Без скобок AND выполняется раньше OR, поэтому country = 'KZ' AND is_paying = 1 сгруппируется вместе, а country = 'RU' станет отдельной веткой OR. В результате в выборку попадут все RU пользователи независимо от оплаты. Скобки делают группировку явной и предотвращают типичную ошибку фильтра.
Проверь себя · 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)` по правилу `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, но не оба). Какое условие корректно?
- Все вопросы по «Булева логика и фильтры» →