Найти в Дзене

Задача # 1. Разбор задач с собеседования по SQL

Оглавление

SQL — один из ключевых навыков для аналитиков, разработчиков и инженеров данных. На собеседованиях часто дают практические задачи для проверки понимания языка. Разберём типовые задачи и их решения.


Теоретический блок:

SQL #1: Властвуй над данными с первой строки кода. Введение в базы данных
Программист в отпуске (постоянно)16 апреля

Задача 1

Описание: Вывести имена всех людей, которые есть в базе данных авиакомпаний

Поля в результирующей таблице: name

Для решения данной задачи нам необходимо проанализировать связи между таблицами в нашей базе данных. Мы видим 4 таблицы:

-2
  1. Trip - Расписание рейсов
  2. Company - Компании, осуществляющие авиаперелёты
  3. Pass_in_trip - Список купленных билетов
  4. Passenger - Пассажиры, купившие билеты

Поля с знаком 🔑 являются "Первичным ключом" или Primary Key, сокращенное название (PK).

Первичный ключ (primary key) — это специальный столбец таблицы реляционной базы данных, предназначенный для уникальной идентификации каждой записи таблицы.

Для решения любой задачи нужно пользоваться алгоритмом:

  1. Разобрать условие (какие таблицы, поля, условия).
  2. Определить JOIN-ы (какие таблицы связаны и как).
  3. Добавить фильтрацию (WHERE, HAVING).
  4. Убрать дубликаты (DISTINCT, GROUP BY).
  5. Проверить альтернативные решения (IN, EXISTS, подзапросы).

🔑 Решение

SQL-запрос для вывода имен всех пассажиров из базы данных авиакомпаний:

SELECT name FROM Passenger;
-3

Шаги запроса:

  1. Выбирает только столбец name из таблицы Passenger
  2. Возвращает все строки из таблицы (так как нет условий WHERE)
  3. Результат будет содержать список всех имен пассажиров, которые есть в базе данных

Если вам нужно уточнить запрос (например, исключить дубликаты или добавить сортировку), можно использовать такие варианты:

1. Уникальные имена (без дубликатов):

SELECT DISTINCT name FROM Passenger;
-4

2. Имена с сортировкой по алфавиту:

SELECT name FROM Passenger ORDER BY name;
-5

3. Уникальные имена с сортировкой:

SELECT DISTINCT name FROM Passenger ORDER BY name;
-6

Советы по решению SQL задач на собеседовании:

  1. Уточняйте требования: Задавайте вопросы, если условие неполное.
  2. Начинайте с простого: Сначала напишите базовый запрос, затем усложняйте.
  3. Тестируйте: Проверяйте запрос на крайних случаях (NULL, дубли).
  4. Оптимизируйте: Объясните, как можно улучшить запрос (индексы, структура).
  5. Комментируйте: Проговаривайте ход мыслей во время решения.

Практика решения реальных задач — лучший способ подготовиться к SQL-собеседованию. Используйте платформы вроде LeetCode, HackerRank для тренировки.