В фильтре написали country = 'RU' AND device = 'ios' OR device = 'android'. Какой набор строк реально пройдёт фильтр при стандартном приоритете, где AND сильнее OR?
AТолько строки, где выполняется
country = 'RU' AND (device = 'ios' OR device = 'android')BСтроки, где
(country = 'RU' AND device = 'ios') OR device = 'android'CТолько строки, где
country = 'RU' AND device = 'android'DСтроки, где
country = 'RU' OR (device = 'ios' AND device = 'android')Правильный ответ. Без скобок
device = 'android' становится отдельной веткой через OR и не зависит от условия по стране.Разбор
Сначала вычисляется часть country = 'RU' AND device = 'ios'. Затем результат объединяется с device = 'android' через OR, поэтому все android-строки попадают в выборку независимо от страны. Это типичная ошибка приоритета: хотели country = 'RU' AND (device = 'ios' OR device = 'android'), но забыли скобки. Без скобок AND связывается раньше OR, и второе устройство «отрывается» от страны.
Проверь себя · 1/3разбор после ответа
Какое условие фильтра тождественно ложно (никогда не выполнится) для флага
is_paying, который принимает только 0 или 1?Ещё вопросы по теме «Булева логика и фильтры»
- Какому выражению со скобками эквивалентно условие `is_new = 1 OR is_paying = 1 AND has_coupon = 1`, если `AND` выполняется раньше `OR`?
- Какое условие эквивалентно `NOT (is_paying = 1 AND has_subscription = 1)` по правилу де Моргана? Выберите запись через `OR`.
- Вы хотите выбрать строки, которые не относятся к `country = 'RU' OR country = 'KZ'`. Какое выражение соответствует `NOT (country = 'RU' OR country = 'KZ')` по правилу де Моргана?
- В таблице пользователей есть флаги `has_email_optin` и `has_push_optin` (0 или 1). Нужно выбрать пользователей, у которых включён ровно один канал (email или push, но не оба). Какое условие корректно?
- В сегмент нужно включить пользователей, у которых активен хотя бы один из флагов: `is_student = 1` или `has_coupon = 1`. Какое условие соответствует формулировке «хотя бы один»?
- Все вопросы по «Булева логика и фильтры» →