Достаточно persons с условием age BETWEEN 18 AND 40. Обе границы включаются; таблицы счетов и транзакций для отбора по возрасту не нужны.
SQL‑запрос для получения имён пользователей в возрастном диапазоне
Достаточно persons с условием age BETWEEN 18 AND 40. Обе границы включаются; таблицы счетов и транзакций для отбора по возрасту не нужны.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Необходимо вывести имена людей, чей возраст находится в диапазоне от 18 до 40 лет. Имеются три таблицы:
- persons с полями person_id, phone, name, age, email
- client_accounts с полями account_id, person_id, created_by, changed_by
- transactions с полями account_id, amount, transaction_time, transaction_id
Ответ
Достаточно persons с условием age BETWEEN 18 AND 40. Обе границы включаются; таблицы счетов и транзакций для отбора по возрасту не нужны.
Запрос:
SELECT name
FROM persons
WHERE age BETWEEN 18 AND 40;
NULL в age не проходит условие. Лишние JOIN могут размножить человека из-за нескольких счетов или транзакций. DISTINCT тоже не обязателен: он скрыл бы разных людей с одинаковым именем. Для исключения границ потребовались бы строгие сравнения, но это уже другой контракт.