SQL для аналитиков

Практика SQL на настоящей базе с проверкой каждого запроса

Пишите запросы в браузере к базе авиакомпании на 4,1 млн строк. Каждый ответ сверяется с эталоном — от первого SELECT до оконных функций, retention и задач с собеседований.

Без карты. Вся теория и первый модуль бесплатны; пропуск открывает все курсы Nomto.

  • 82 урока, 248 задач
  • Синтаксис PostgreSQL
  • ИИ-тьютор в каждой задаче
-- пять маршрутов с наибольшим числом пассажиров
SELECT a.city || ' → ' || b.city AS route,
       COUNT(*) AS passengers
FROM ticket_flights tf
JOIN flights f  ON f.flight_id = tf.flight_id
JOIN airports a ON a.airport_code = f.departure_airport
JOIN airports b ON b.airport_code = f.arrival_airport
GROUP BY route
ORDER BY passengers DESC
LIMIT 5;
routepassengers
Moscow → St. Petersburg37575
St. Petersburg → Moscow35427
Moscow → Novosibirsk29063
Novosibirsk → Moscow28239
Moscow → Sochi23098

5 строк

Курс

Два трека: с нуля до уровня собеседования

Если SQL для вас новый, начните с основ. Если JOIN и GROUP BY уже пишете — сразу в продвинутый трек.

Основы SQL

9 модулей · 31 урок · 94 задачи

Всё, что аналитик пишет каждый день, в том порядке, в котором это складывается.

  1. Как устроены данные
  2. SELECT: первые запросы
  3. WHERE: фильтрация строк
  4. Функции: числа, строки и даты
  5. GROUP BY и HAVING
  6. JOIN
  7. CASE и NULL
  8. Подзапросы и CTE
  9. UNION и два итоговых проекта

Продвинутый SQL

16 модулей · 51 урок · 154 задачи

Запросы, которые на самом деле нужны в аналитике и спрашивают на собеседованиях.

  1. Оконные функции: ранги, доли, накопительные итоги
  2. Календари дат без пропусков
  3. Self join, full join и рекурсия
  4. Рамки окон и перцентили
  5. Gaps and islands (серии)
  6. Сессии и пути
  7. ROLLUP и CUBE
  8. JSON и массивы
  9. История изменений (SCD2)
  10. Качество данных
  11. DAU, retention и LTV
  12. Эксперименты и A/B-тесты
  13. Задачи с собеседований
  14. Два итоговых проекта

Как устроен урок

Короткая теория, разбор и три задачи

  1. Короткая теория

    Одна идея на урок, пример запроса, который можно запустить, и ключевые мысли.

  2. Разбор по строкам

    Готовый запрос, разобранный построчно: что делает каждая часть и зачем она нужна.

  3. Три задачи

    Разминка, основная и со звёздочкой. К каждой — стартовый запрос, две подсказки и решение, когда оно нужно.

Пример

Задача и что скажет проверка

Запрос, который выполнился, не всегда верный. Проверка сравнивает ваш результат с эталоном и говорит, что не так: не та колонка, лишние строки, порядок.

Разминка · GROUP BY и HAVING

В каких аэропортах больше 400 вылетов за весь период? Отсортируйте по flights_count по убыванию.

Ожидаемые колонки: departure_airport flights_count

FROM flights

Ваш запрос

SELECT departure_airport,
       COUNT(*) AS flights_count
FROM flights
GROUP BY departure_airport
HAVING COUNT(*) >= 400
ORDER BY flights_count DESC;

✗ 19 строк вместо 18. Лишняя — Хабаровск (KHV) ровно с 400 вылетами: «больше 400» — это >, а не >=.

✓ HAVING COUNT(*) > 400 — Верно: 18 аэропортов. Больше тысячи вылетов только у пяти.

Данные

Настоящая база авиакомпании, а не десять игрушечных строк

Рейсы, бронирования, билеты и посадочные талоны, а ещё программа лояльности, события приложения и A/B-эксперименты — чтобы в аналитических задачах было что анализировать.

14 таблиц

4,1M строк

  • Основа — демо-база Postgres Professional, классика для обучения SQL.
  • Вы пишете на PostgreSQL — диалекте, на котором работает большинство аналитиков.
  • Запросы выполняются в песочнице только на чтение: ничего не нужно ставить и ничего нельзя сломать.

В кабинете

Помощь, когда застряли, и место для экспериментов

ИИ-тьютор в каждой задаче

Спросите, почему запрос не проходит. Тьютор видит задачу и ваш результат и наводит на исправление, а не выдаёт ответ.

Песочница

Свободная консоль по всей базе со схемой таблиц рядом. Задавайте свои вопросы к данным.

Справочник по синтаксису

Короткие карточки по каждой конструкции и функции курса, ссылки на них — прямо из уроков.

Для кого

Для тех, кому SQL нужен в работе

Цена

Начните бесплатно, откройте всё пропуском

Бесплатно

  • Вся теория и разборы
  • Первый модуль «Основ SQL»
  • 30 проверок, чтобы попробовать курс (10 без аккаунта)
  • 3 вопроса тьютору (1 без аккаунта)

С пропуском Nomto

  • Все 25 модулей и 248 задач
  • Проверки без дневного лимита
  • Больше вопросов тьютору
  • И все остальные курсы Nomto

Один пропуск на все курсы Nomto. Цены — в кабинете при оплате.

Ваш язык

Объяснения на русском, английском, испанском, китайском, португальском или вьетнамском

SQL везде одинаковый. Теория, подсказки и тьютор говорят на языке, который вы выберете в кабинете; названия таблиц и колонок не меняются.

Начать бесплатно →

Вопросы

Нужно что-то устанавливать?

Нет. Каждый запрос выполняется из браузера на нашей базе в песочнице только на чтение. Нужен только браузер; писать SQL удобнее с ноутбука, чем с телефона.

Подойдёт, если я начинаю с нуля?

Да. «Основы SQL» начинаются с того, как устроены данные в таблицах, и первого SELECT. Каждый урок — короткая теория, разбор и три задачи от разминки до задачи со звёздочкой.

Какой диалект SQL?

Синтаксис PostgreSQL — на нём работает большинство аналитиков. Всё выученное с небольшими отличиями переносится на ClickHouse, BigQuery, Snowflake и MySQL.

Есть ли ответы к задачам?

Да. У каждой задачи две подсказки и эталонное решение, а после верной проверки — пояснение, что значит результат. Проверка ещё и говорит, что не так с вашим результатом: не та колонка, лишние строки или порядок.

Поможет подготовиться к собеседованию?

В «Продвинутом SQL» есть модуль задач с собеседований, а у тем, о которых спрашивают чаще всего, свои модули: оконные функции, gaps and islands, сессии, retention и эксперименты.

Что бесплатно?

Вся теория и разборы, первый модуль «Основ SQL» и пробный доступ: 30 проверок и 3 вопроса тьютору с аккаунтом (10 проверок и 1 вопрос без него). Пропуск Nomto открывает все модули и все курсы Nomto; цены — в кабинете при оплате.

Напишите первый запрос

Первый урок занимает несколько минут. Первый проверенный ответ покажет, как всё устроено.