Задачи по SQL онлайн: решите и проверьте запрос
32 задачи на одной учебной базе — авиакомпания с рейсами, бронированиями и билетами. Откройте задачу, напишите запрос, и сервер сверит результат с эталоном. Бесплатно, без установки и регистрации.
Таблицы и столбцы базы — на странице «SQL онлайн»: там же можно выполнить любой запрос без проверки, чтобы посмотреть данные.
Задачи по SQL для начинающих
SELECT, сортировка, LIMIT и DISTINCT. Хватит знания, что таблица состоит из строк и столбцов.
Задача 1 · SELECT и алиас
Километры в заголовке
По заголовку
rangeне понять, в чём измерена дальность. Выведи из таблицыaircraftsмодель и дальность так, чтобы единица была видна в имени столбца. В результате — столбцыmodelиrange_km. Порядок строк не важен.Задача 2 · ORDER BY
Аэропорты по алфавиту
Составь алфавитный список аэропортов: столбцы
airport_nameиcityиз таблицыairports, строки отсортированы по названию аэропорта (airport_name).Задача 3 · ORDER BY и LIMIT
Самые восточные аэропорты
Найди пять самых восточных аэропортов. Выведи из таблицы
airportsстолбцыairport_name,cityиlongitude, отсортируй поlongitudeпо убыванию и оставь первые пять строк.Задача 4 · DISTINCT
Статусы рейсов
Какие статусы бывают у рейсов? Выведи все различные значения
statusиз таблицыflights— один столбецstatus, строки по алфавиту.
Задачи на WHERE и условия
Оставить нужные строки: сравнения, несколько условий, диапазон, поиск по шаблону и пустые значения.
Задача 5 · WHERE
Дальнемагистральные самолёты
Новому маршруту нужен самолёт с дальностью больше 5 700 км. Найди такие модели: выведи
modelиrangeиз таблицыaircrafts. Порядок строк не важен.Задача 6 · BETWEEN
Самолёты средней дальности
Маршрутам средней длины подходят самолёты с дальностью от 3 000 до 5 700 км включительно. Выведи их
modelиrange, отсортируй поrangeпо возрастанию.Задача 7 · AND и OR
Шереметьево — Пулково, 1 августа
Коллеге нужно 1 августа 2026 года улететь из Шереметьево (
SVO) в Пулково (LED). Подходят рейсы с вылетом по расписанию в 12:35 или позже, но строго раньше 18:40. Выведиflight_no,scheduled_departure,status. Отсортируй поscheduled_departure.Задача 8 · LIKE
Все Боинги
Сколько в парке Боингов и как далеко они летают? Выведи
modelиrangeсамолётов, у которых название модели начинается со слова «Боинг». Порядок строк не важен.Задача 9 · IS NULL
Отмены без вылета
Пассажирам отменённых рейсов положен возврат денег. Найди в таблице
flightsрейсы из Домодедово (DME), которые отменены и действительно не вылетели: статусCancelled, а фактического вылета нет —actual_departureпустой. Выведиflight_no,scheduled_departure,arrival_airport. Отсортируй поscheduled_departure, затем поflight_no.
Задачи на функции и даты
Округлить число, достать час из времени и собрать ряд дат без пропусков.
Задача 10 · ROUND
Дальность в милях
Партнёр из США просит дальность самолётов в милях. Выведи из
aircraftsстолбцыmodel,rangeиrange_miles— дальность в милях: разделиrangeна1.609(в одной миле 1,609 км; в запросе дробную часть отделяет точка) и округли до целого. Отсортируй поrangeпо убыванию.Задача 11 · дата и время
Вечер в Шереметьево
Какие рейсы вылетают из Шереметьево (
SVO) 1 августа 2026 года в 17:00 или позже по расписанию? Выведиflight_no,arrival_airportиdep_hour— час вылета по расписанию. Отсортируй поscheduled_departure, при равенстве — поflight_no.Задача 12 · ряд дат
Отмены по дням августа
Сколько рейсов отменено в каждый день августа 2026 года? День — дата вылета по расписанию, отменённый рейс —
status = 'Cancelled'. В результате должен быть каждый день с 1 по 31 августа, дни без отмен — с нулём. Столбцы:flight_date(тип DATE) иcancelled. Отсортируй поflight_date.
Задачи на GROUP BY и HAVING
Свернуть тысячи строк в короткую сводку и оставить в ней только нужные группы.
Задача 13 · COUNT
Отменённые рейсы
Сколько вылетов в базе отменено (
status=Cancelled)? Выведи один столбецcancelled_flights.Задача 14 · GROUP BY
Вылеты по статусам
Сколько вылетов в каждом статусе? Выведи
statusиflights_count, отсортируй поflights_countпо убыванию.Задача 15 · HAVING
Самые загруженные аэропорты
Из каких аэропортов больше 400 вылетов за весь период? Выведи
departure_airportиflights_count, отсортируй поflights_countпо убыванию.
Задачи на JOIN
Собрать ответ из нескольких таблиц и не потерять строки без пары.
Задача 16 · INNER JOIN
Рейсы по моделям самолётов
Сколько рейсов по расписанию приходится на каждую модель самолёта? Считай все строки
flights— все рейсы по расписанию, включая будущие и отменённые. Выведи столбцыmodelиflights_count. Отсортируй поflights_countпо убыванию, при равенстве — поmodel.Задача 17 · LEFT JOIN
Самолёт, который не летает
Есть ли в парке модели без единого рейса в
flights? Выведи столбцыaircraft_codeиmodel, отсортируй поaircraft_code.Задача 18 · несколько JOIN
Куда прилетает больше всего людей
В какие города прилетело больше всего пассажиров? Считай рейсы со статусом
Arrived; один пассажир на рейсе — одна строкаticket_flights. Выведи 10 городов: столбцыarrival_cityиpassengers. Отсортируй поpassengersпо убыванию, при равенстве — поarrival_city.
Задачи на CASE и NULL
Разложить строки по своим категориям и не ошибиться там, где значение не заполнено.
Задача 19 · CASE WHEN
Салон Боинга 777 по-русски
Посчитай места в Боинге 777-300 (
aircraft_code = '773') по классам и назови классы по-русски:Economy→ «Эконом»,Comfort→ «Комфорт»,Business→ «Бизнес». В результате — столбцыclass_ruиseats_count. Отсортируй поseats_countпо убыванию.Задача 20 · NULL и COUNT
Где заполнено время
Сводка для проверки качества данных: для каждого статуса рейса посчитай, сколько всего рейсов и у скольких заполнено фактическое время вылета и прилёта. В результате — столбцы
status,flights_count,with_departure(заполненactual_departure) иwith_arrival(заполненactual_arrival). Отсортируй поflights_countпо убыванию.
Задачи на подзапросы, CTE и UNION
Сравнить строку с числом, которое сначала нужно посчитать, разбить запрос на шаги и сложить два набора строк.
Задача 21 · подзапрос в WHERE и SELECT
Дальность выше средней
Какие модели летают дальше, чем в среднем по парку, и на сколько? Оставь модели, у которых дальность больше средней по всем моделям. В результате — столбцы
model,rangeиabove_avg_km(дальность минус средняя, округли до целого). Отсортируй поrangeпо убыванию.Задача 22 · WITH
Где задерживают дольше
Где вылеты задерживают дольше всего? Найди пять аэропортов с самой большой средней задержкой вылета среди тех, откуда уже вылетело не меньше 207 рейсов. В результате — столбцы
departure_airport,flights(сколько рейсов вылетело) иavg_delay_min(средняя задержка в минутах, округли до одного знака). Отсортируй поavg_delay_minпо убыванию, при равенстве — поdeparture_airport.Задача 23 · UNION
Аэропорты, задетые отменами
Служба, которая обзванивает аэропорты, просит список тех, кого коснулись отмены в августе 2026 года. Отмена — рейс со
status = 'Cancelled'иscheduled_departureв августе; она касается и аэропорта вылета, и аэропорта прилёта. В результате — один столбецairport_code; каждый аэропорт один раз, даже если отмен было две. Отсортируй поairport_code.
Задачи на оконные функции
Агрегат рядом со строкой, ранги, топ в группе, доля от итога, нарастающий итог и сравнение с предыдущей строкой.
Задача 24 · OVER
Дальность против средней по парку
Выведи все модели самолётов с дальностью, а рядом в каждой строке — среднюю дальность парка и разницу с ней. Столбцы:
model,range,avg_range(средняя по всем моделям) иdiff_from_avg(дальность модели минус средняя) — оба округли до целого. Отсортируй поrangeот большей к меньшей.Задача 25 · ROW_NUMBER и RANK
Места по дальности
Пронумеруй модели самолётов по дальности: самой дальней — 1, следующей — 2 и так далее. Столбцы:
model,range,place. Отсортируй поplace.Задача 26 · топ-N в группе
Самый долгий рейс каждой модели
Найди самый долгий по расписанию рейс каждой модели самолёта. Время в пути в минутах —
EXTRACT(EPOCH FROM scheduled_arrival - scheduled_departure) / 60. При равном времени бери рейс с меньшимflight_no. Столбцы:aircraft_code,flight_no,departure_airport,arrival_airport,minutes. По одной строке на модель — в результате 8 строк: у Аэробуса A320 рейсов нет. Отсортируй поaircraft_code.Задача 27 · доля от итога
Рейсы по статусам
Для каждого статуса рейса посчитай число рейсов
flights_countи долю от всех рейсов в процентахshare_pct, округлённую до двух знаков. Считай все рейсы таблицы flights. Отсортируй по числу рейсов от большего к меньшему.Задача 28 · нарастающий итог
Бронирования нарастающим итогом
Для каждого дня продаж выведи число бронирований
bookingsи накопленное с первого дня число бронированийrunning_bookings. День — дата изbook_date. Отсортируй по дню.Задача 29 · LAG
День к дню
Для каждого дня продаж выведи число бронирований
bookings, число бронирований наканунеprev_bookingsи разницуdiff= bookings − prev_bookings. Продажи начались 17 июня, до этого бронирований не было: у первого дняprev_bookingsдолжен быть 0, а неNULL. Отсортируй по дню.
Задачи по SQL с собеседований
То, что спрашивают на уровне middle: серии дней подряд, второе по величине значение, возврат на следующий день.
Задача 30 · серии и острова
Серии участника 159
Найди все серии дней подряд, в которые участник 159 открывал приложение (событие
app_open). Для каждой серии выведи первый деньfirst_day, последний деньlast_dayи число днейstreak_days. Отсортируй поfirst_day.Задача 31 · N-е по величине
Вторая цена в каждом классе
Классика собеседований — вторая по величине цена. Для каждого класса обслуживания найди самый высокий тариф, действующий на момент среза, и вторую цену — самую высокую, которая строго меньше максимальной. Попробуй через MAX и условие «меньше максимума», без LIMIT, OFFSET и окон: проверка смотрит только на результат, способ — на твоей совести. Столбцы:
fare_conditions,max_price,second_price. Отсортируй поfare_conditions.Задача 32 · возврат на следующий день
Вернулись на следующий день
Вопрос с собеседования: какая доля пользователей возвращается на следующий день? Для каждого дня с 27 июля по 2 августа посчитай клиентов (
client_id) с событиями в этот день и сколько из них пришли снова на следующий календарный день. Столбцы:activity_day,active_clients,returned_next_day,returned_pct(доля вернувшихся в процентах, один знак). Отсортируй поactivity_day.
Что решать дальше
Эти задачи — выборка из двух курсов. В «SQL с нуля» 94 задачи от первого SELECT до подзапросов, в «Продвинутом SQL» — 154: оконные функции, сессии, JSON, продуктовые метрики и задачи с собеседований.
Если нужны задачи с готовыми ответами, чтобы сверяться, — 30 SQL-задач с решениями. Готовитесь к собеседованию — задачи с собеседований аналитика и вопросы по SQL.
Частые вопросы
Как проверяется решение?
Сервер выполняет ваш запрос на учебной базе авиакомпании и сравнивает результат с эталонным: столбцы, строки и значения. Если не сошлось, вы увидите, чем именно — лишние столбцы, другое число строк или другие значения.
Где посмотреть правильный ответ?
Готового запроса на странице нет намеренно: задача, в которой ответ виден сразу, ничему не учит. У каждой задачи есть ссылка на урок — там объяснение темы, разбор похожего запроса и подсказка в две ступени. Задачи с готовыми решениями собраны в отдельной статье библиотеки.
Какой диалект SQL нужен?
Пишите так, как писали бы в PostgreSQL. Запросы выполняет DuckDB, его синтаксис к PostgreSQL очень близок; где базы расходятся, проверка предупредит.
Нужно ли регистрироваться?
Нет. Здесь задачи решаются без аккаунта, но и прогресс не сохраняется. В курсах прогресс запоминается в браузере, а с аккаунтом — между устройствами.
Где взять больше задач?
В курсе «SQL с нуля» 94 задачи, в «Продвинутом SQL» — 154, все с проверкой. Задачи идут по темам, от простой к сложной; первые 10 и 6 уроков открыты бесплатно.