SQL — один из ключевых навыков для аналитиков, разработчиков и инженеров данных. На собеседованиях часто дают практические задачи для проверки понимания языка. Разберём типовые задачи и их решения.
Предыдущее задание:
Следующее задание:
Задача 3. Вывести все рейсы, совершенные из Москвы
Условие задачи
Требуется вывести все рейсы, которые были совершены из Москвы. Результирующая таблица должна содержать все поля таблицы рейсов (используется звездочка *).
Анализ структуры базы данных
Исходя из предыдущей задачи, мы знаем, что в базе имеются таблицы:
- Trip — основная таблица с расписанием рейсов
- Company — авиакомпании
- Pass_in_trip — информация о билетах
- Passenger — данные пассажиров
Для текущей задачи нам понадобится только таблица Trip, так как она содержит информацию о маршрутах рейсов.
Определение критериев выборки
Нам нужно выбрать рейсы, которые:
- Отправлялись из Москвы
- В таблице должен быть столбец, указывающий город отправления (вероятно, town_from)
Формирование SQL-запроса
Базовый запрос для решения задачи:
SELECT * FROM Trip
WHERE town_from = 'Moscow';
Этот запрос:
- Выбирает все столбцы (*) из таблицы Trip
- Фильтрует только те рейсы, где город отправления равен 'Moscow'
Возможные вариации и уточнения
- Чувствительность к регистру: В некоторых СУБД сравнение строк может быть регистрозависимым. Для надежности можно использовать:
SELECT *
FROM Trip
WHERE LOWER(town_from) = 'moscow';
- Частичное совпадение: Если город может записываться по-разному ("Москва", "Moscow", "Мск" и т.д.), потребуется более сложное условие.
- Сортировка результатов: Для удобства можно добавить сортировку:
SELECT *
FROM Trip
WHERE town_from = 'Moscow'
ORDER BY time_out;
Проверка структуры таблицы Trip
Предполагаемая структура таблицы Trip (на основе типичных авиабаз данных):
- trip_no — номер рейса (PK)
- id_comp — ID компании (внешний ключ)
- plane — модель самолета
- town_from — город отправления
- town_to — город прибытия
- time_out — время вылета
- time_in — время прилета
Оптимизация запроса
Если таблица очень большая, вместо SELECT * лучше явно перечислить нужные столбцы:
SELECT trip_no, id_comp, plane, town_from, town_to, time_out, time_in
FROM Trip
WHERE town_from = 'Moscow';
Заключение
Задача решается простым запросом с условием фильтрации по городу отправления. Основная сложность может заключаться в точном определении названия столбца с городом отправления и формата записи названия города.
🔑 Итоговое решение:
SELECT *
FROM Trip
WHERE town_from = 'Moscow';