SQL — один из ключевых навыков для аналитиков, разработчиков и инженеров данных. На собеседованиях часто дают практические задачи для проверки понимания языка. Разберём типовые задачи и их решения.
Теоретический блок:
Задача 1
Описание: Вывести имена всех людей, которые есть в базе данных авиакомпаний
Поля в результирующей таблице: name
Для решения данной задачи нам необходимо проанализировать связи между таблицами в нашей базе данных. Мы видим 4 таблицы:
- Trip - Расписание рейсов
- Company - Компании, осуществляющие авиаперелёты
- Pass_in_trip - Список купленных билетов
- Passenger - Пассажиры, купившие билеты
Поля с знаком 🔑 являются "Первичным ключом" или Primary Key, сокращенное название (PK).
Первичный ключ (primary key) — это специальный столбец таблицы реляционной базы данных, предназначенный для уникальной идентификации каждой записи таблицы.
Для решения любой задачи нужно пользоваться алгоритмом:
- Разобрать условие (какие таблицы, поля, условия).
- Определить JOIN-ы (какие таблицы связаны и как).
- Добавить фильтрацию (WHERE, HAVING).
- Убрать дубликаты (DISTINCT, GROUP BY).
- Проверить альтернативные решения (IN, EXISTS, подзапросы).
🔑 Решение
SQL-запрос для вывода имен всех пассажиров из базы данных авиакомпаний:
SELECT name FROM Passenger;
Шаги запроса:
- Выбирает только столбец name из таблицы Passenger
- Возвращает все строки из таблицы (так как нет условий WHERE)
- Результат будет содержать список всех имен пассажиров, которые есть в базе данных
Если вам нужно уточнить запрос (например, исключить дубликаты или добавить сортировку), можно использовать такие варианты:
1. Уникальные имена (без дубликатов):
SELECT DISTINCT name FROM Passenger;
2. Имена с сортировкой по алфавиту:
SELECT name FROM Passenger ORDER BY name;
3. Уникальные имена с сортировкой:
SELECT DISTINCT name FROM Passenger ORDER BY name;
Советы по решению SQL задач на собеседовании:
- Уточняйте требования: Задавайте вопросы, если условие неполное.
- Начинайте с простого: Сначала напишите базовый запрос, затем усложняйте.
- Тестируйте: Проверяйте запрос на крайних случаях (NULL, дубли).
- Оптимизируйте: Объясните, как можно улучшить запрос (индексы, структура).
- Комментируйте: Проговаривайте ход мыслей во время решения.
Практика решения реальных задач — лучший способ подготовиться к SQL-собеседованию. Используйте платформы вроде LeetCode, HackerRank для тренировки.