Каталог/назад к курсам
Продвинутый SQL: сложные запросы и задачи для собеседований
SQLПродвинутый

Продвинутый SQL: сложные запросы и задачи для собеседований

Продолжение базового SQL: сложные JOIN, оконные рамки, временные ряды, retention, воронки и рекурсивные CTE. Разбирайте примеры и пишите запросы с автоматической проверкой — от отдельных расчётов до витрины интернет-магазина.

12 модулей • 48 уроков263 задания с проверкойоколо 46 ч
Код в браузере: SQLСвободный темпСертификат с проверкой

О курсе

Вы уже пишете SELECT, соединяете таблицы и считаете агрегаты. Следующий шаг — запросы, в которых нужно совместить несколько источников, учесть историю изменений и получить точный результат на неполных данных.

В этом курсе вы будете рассчитывать повторные покупки и удержание клиентов, выделять пользовательские сессии, строить последовательные воронки и находить ошибки в финансовых отчётах. Каждую тему разберём на таблицах: какие строки поступают на вход, что делает запрос и почему получается именно такой результат.

Что разберём

  • Сложные соединения: дубли после JOIN, предварительная агрегация, EXISTS и выбор исторической записи на нужную дату.
  • Оконные рамки ROWS и RANGE, скользящие показатели, календарь с пропущенными датами.
  • Последовательности событий, сессии и пересекающиеся интервалы.
  • Когорты, retention, воронки и RFM-сегментация.
  • Рекурсивные CTE для деревьев и графов, проверки качества данных и сверка отчётов.
  • Чтение планов выполнения SQLite, составные индексы и переписывание запросов с сохранением результата.

После разобранных примеров вы пишете собственные SQL-запросы. Автоматическая проверка использует несколько наборов данных, в том числе скрытые: решение должно учитывать пропуски, равные даты, дубли и пустые выборки.

В каждом модуле — отдельный кейс. В финальном блоке собраны тестовые задания по повторным покупкам, сессиям и финансовому отчёту. Итоговый проект — аналитическая витрина интернет-магазина.

Практика выполняется прямо в браузере на SQLite. Основные приёмы пригодятся и в других СУБД; функции дат и планы выполнения разбираются именно для SQLite.

Чему научитесь

  • Соединять несколько источников и находить причины неверных сумм и дублей в результате.
  • Выбирать оконные рамки, строить календарные ряды и рассчитывать скользящие показатели.
  • Восстанавливать исторические значения, выделять сессии и объединять интервалы.
  • Считать retention, последовательные воронки и RFM-сегменты по заданным правилам.
  • Использовать рекурсивные CTE для обхода деревьев и графов.
  • Сверять отчёты, читать планы выполнения SQLite и решать цельные SQL-тестовые задания.

Для кого

  • Выпускники базового SQL, которым нужна следующая ступень практики.
  • Аналитики и разработчики, которые хотят увереннее решать многошаговые задачи и готовиться к SQL-тестовым заданиям.

Формат

  • 48 текстовых уроков в 12 модулях: объяснения, таблицы и разобранные SQL-примеры.
  • 109 SQL-задач с автоматической проверкой на открытых и скрытых тестах, включая 12 модульных кейсов.
  • Проверочные вопросы и итоговый проект. Ориентир по программе — 46 часов с практикой; учитесь в своём темпе.

Что нужно на старте

  • Умеете писать SELECT с WHERE, GROUP BY и HAVING, пользоваться INNER JOIN и LEFT JOIN.
  • Знакомы с CTE, ROW_NUMBER, RANK и LAG/LEAD. Подойдёт наш курс «SQL с нуля» или эквивалентная подготовка.
#sql#продвинутый sql#sqlite#оконные функции#cte#аналитика данных#тестовые задания

Автор курса

Алексей Малышкин

Разрабатываю образовательные материалы по программированию, машинному обучению и анализу данных. Темы: Python-разработка, аналитика, ML-инструменты (LangChain, vector databases, AI agents), компьютерное зрение. Стараюсь объяснять технические концепции понятно и структурировано. Ранее преподавал на Stepik и обучил более 2000 студентов. Мой профиль на Stepik - https://stepik.org/users/273781420/profile Мой телеграм для связи @alexey_latorn

Программа

01Корректность запросов4 урока
02Соединения и кардинальность4 урока
03Коррелированные подзапросы4 урока
1Коррелированные подзапросы и EXISTS
2NOT EXISTS и NOT IN при наличии NULLпробный
3Реляционное деление: условия «для всех»
4SELF JOIN и поиск уникальных пар
04Условная агрегация и операции над множествами4 урока
1Условная агрегация и COUNT(DISTINCT)
2Взвешенное среднее и агрегация показателей
3Сводные таблицы через условную агрегацию
4INTERSECT и EXCEPT
05Оконные рамки4 урока
06Даты и временные ряды4 урока
1Функции дат и расчёт длительности в SQLite
2Календарная таблица и пропущенные даты
3Скользящие показатели по календарным периодам
4AS-OF JOIN: выбор исторического значенияпробный
07Серии, сессии и интервалы4 урока
1Gaps and islands: последовательности датпробный
2Выделение пользовательских сессий
3Объединение перекрывающихся интервалов
4Подсчёт одновременно активных интервалов
08Когортный анализ и воронки4 урока
1Формирование когорт
2Расчёт retention и горизонт наблюденияпробный
3Последовательные воронки событий
4RFM-анализ на дату среза
09Рекурсивные CTE4 урока
1WITH RECURSIVE: структура и условие завершенияпробный
2Обход дерева: глубина и путь
3Обход графа и защита от циклов
4Расчёт состава изделия рекурсивным запросом
10Качество данных и сверка отчётов4 урока
1Проверка ключей, ссылок и обязательных значений
2Проверка интервалов действия
3Сверка отчётов по ключам и показателям
4Дата среза и поздняя регистрация событий
11Планы выполнения и индексы4 урока
1EXPLAIN QUERY PLAN в SQLite
2Индексы для равенства и диапазона
3Составные и покрывающие индексы
4Переписывание условий и проверка эквивалентности
12Тестовые задания и итоговый проект4 урока
1Тестовое задание: повторные покупки
2Тестовое задание: сессии и воронка
3Тестовое задание: ошибки финансового отчёта
4Итоговый проект: витрина интернет-магазина
Дополнительные материалы и практика

Задачи

Все задачи курса

Уроки