Какой набор строк вернёт условие WHERE is_active = true AND NOT (country = 'RU' AND age > 25)?

AАктивных пользователей из России старше 25 лет, у которых есть подписка на сервис компании
BВсех пользователей из России независимо от статуса активности и независимо от их возраста
CАктивных пользователей не из России или активных пользователей из России в возрасте 25 лет и младше
DНеактивных пользователей из России, а также всех пользователей младше 25 лет из любой страны
Правильный ответ. NOT инвертирует выражение в скобках: NOT (A AND B) эквивалентно NOT A OR NOT B по закону де Моргана.

Разбор

Условие разбирается так: is_active = true — берём только активных. Далее NOT (country = 'RU' AND age > 25) по закону де Моргана превращается в country <> 'RU' OR age <= 25. Итого: активные пользователи, которые либо не из России, либо из России, но возрастом 25 лет и младше. Активный пользователь из России в возрасте 30 лет под условие не попадёт.

Проверь себя · 1/3разбор после ответа
Вы сортируете товары по величине скидки discount по убыванию. Поле discount может быть NULL (скидки нет). Чтобы товары без скидки всегда оказывались внизу независимо от настроек СУБД, какой вариант сортировки выбрать?
Тренировать SQL в Telegram

Ещё вопросы по теме «Основы SQL-запросов»