SQL — один из ключевых навыков для аналитиков, разработчиков и инженеров данных. На собеседованиях часто дают практические задачи для проверки понимания языка. Разберём типовые задачи и их решения.
Предыдущее задание:
Следующее задание:
Задача 2. Вывод названий всех авиакомпаний
Условие задачи
Необходимо вывести названия всех авиакомпаний. Результирующая таблица должна содержать одно поле: name
Анализ структуры базы данных
В задаче упоминаются 4 таблицы:
- Trip — расписание рейсов
- Company — компании, осуществляющие авиаперелёты
- Pass_in_trip — список купленных билетов
- Passenger — пассажиры, купившие билеты
Нам известно, что поля с пометкой 🔑 являются первичными ключами (Primary Key, PK). Первичный ключ — это специальный столбец таблицы, который уникально идентифицирует каждую запись.
Определение нужной таблицы
Для решения задачи нам нужно вывести названия авиакомпаний. Исходя из описания таблиц:
- Таблица Company явно содержит информацию о компаниях, осуществляющих авиаперелёты
- Таблица Trip содержит расписание рейсов, но названия компаний там могут быть представлены через идентификаторы (внешние ключи)
- Таблицы Pass_in_trip и Passenger содержат информацию о пассажирах и их билетах и не относятся к нашей задаче
Таким образом, нам нужна таблица Company, которая должна содержать поле с названием компании.
Формирование SQL-запроса
Самый простой запрос для получения всех названий компаний из таблицы Company:
SELECT name FROM Company;
Этот запрос:
- Выбирает данные из таблицы Company
- Возвращает только столбец name
- Не содержит условий фильтрации, поэтому вернет все записи из таблицы
Проверка возможных нюансов
Хотя задача выглядит простой, стоит рассмотреть несколько аспектов:
- Уникальность записей: если в таблице могут быть дубликаты названий компаний, может потребоваться DISTINCT
- Сортировка: если нужен определенный порядок вывода, можно добавить ORDER BY
- Название столбца: убедимся, что столбец с названием компании действительно называется name
Модифицированный запрос с учетом этих аспектов:
SELECT DISTINCT name FROM Company ORDER BY name;
Заключение
Для решения задачи достаточно простого SELECT-запроса к таблице компаний. В более сложных случаях может потребоваться соединение таблиц, но в данном условии это не нужно.
🔑 Итоговое решение:
SELECT name FROM Company;