Оконные функции SQL в MySQL: от нуля до уверенного владения

Оконные функции MySQL с нуля: ROW_NUMBER, RANK, LAG и LEAD, SUM() OVER, рамки окна и процентили. 173 интерактивные задачи с автопроверкой на банковских данных. Научитесь решать топ-N по группам, нарастающие итоги и сравнение периодов — и уверенно отвечать на собеседовании.
Начальный уровень
Сертификат Stepik

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

  • Объяснять, чем оконные функции отличаются от GROUP BY и когда нужны именно они
  • Ранжировать данные: ROW_NUMBER, RANK, DENSE_RANK, NTILE
  • Считать нарастающие итоги и скользящие средние через SUM() и AVG() OVER
  • Вычислять долю от общего и процент выполнения плана одним запросом
  • Сравнивать строку с соседними: LAG, LEAD, FIRST_VALUE, LAST_VALUE, NTH_VALUE
  • Точно управлять диапазоном вычислений через ROWS BETWEEN и RANGE BETWEEN
  • Делать процентильный анализ с CUME_DIST и PERCENT_RANK
  • Комбинировать оконные функции с CTE, JOIN и подзапросами
  • Решать типовые задачи: топ-N по группам, дедупликация, сравнение периодов, ABC-анализ
  • Идти от бизнес-вопроса к запросу: определить зерно результата и выбрать нужную функцию
  • Уверенно отвечать на вопросы про оконные функции на собеседовании

О курсе

Перестань группировать — начни анализировать

GROUP BY схлопывает строки. Оконные функции — нет. Вы получаете и детализацию, и агрегат в одном запросе. Это тот навык, который отделяет junior-аналитика от middle.

Курс проведёт вас от первого OVER() до процентилей и рамок окна — на живых банковских данных, а не на абстрактных таблицах.

173
SQL-задачи
с автопроверкой
129
теста на
понимание
45
уроков
8
модулей

Одна задача, два мира

«Посчитай нарастающий итог платежей по каждому полису». Вот как это решается без оконных функций — коррелированным подзапросом:

SELECT p.policy_id, p.amount,
  (SELECT SUM(p2.amount) FROM payments p2
    WHERE p2.policy_id = p.policy_id
      AND p2.pay_date <= p.pay_date) AS running_total
FROM payments p;

А вот то же самое с ними:

SELECT policy_id, amount,
  SUM(amount) OVER (PARTITION BY policy_id ORDER BY pay_date) AS running_total
FROM payments;

Короче, быстрее и читается как обычное предложение. Весь курс — про то, чтобы вы видели такие решения сразу.

Как растёт сложность

Введение
уровень 1
Ранжирование
уровень 1–2
Агрегаты
уровень 1–2
Смещение
уровень 2
Рамки окна
уровень 2–3
Продвинутые
уровень 3
Финальный проект
уровень 3

От «одна функция, одна таблица» до «несколько окон, CTE и JOIN в одном аналитическом отчёте».

Что внутри

Все функции стандарта, а не три популярные
ROW_NUMBER, RANK, DENSE_RANK, NTILE · SUM/AVG/COUNT/MIN/MAX OVER · LAG, LEAD, FIRST_VALUE, LAST_VALUE, NTH_VALUE · CUME_DIST, PERCENT_RANK · ROWS BETWEEN и RANGE BETWEEN.
Рамки окна — целый модуль
Место, где ломаются почти все самоучки. Почему LAST_VALUE возвращает не то, что вы ждёте, чем RANGE отличается от ROWS и что такое рамка по умолчанию.
Задачи как вопросы бизнеса
«Кто лучший агент в каждом филиале?», «Как растут продажи от месяца к месяцу?», «Какие клиенты дают 80% выручки?» — вы идёте от вопроса к запросу, а не наоборот.
65% времени — практика
173 задачи с автоматической проверкой. Теория даётся ровно в том объёме, который нужен, чтобы решить следующую задачу.

Программа

  1. Датасет — знакомство с банковской базой из 9 таблиц
  2. Введение — чем OVER() отличается от GROUP BY, синтаксис окна, PARTITION BY
  3. РанжированиеROW_NUMBER, RANK, DENSE_RANK, NTILE. Топ-N по группам, дедупликация, квартили
  4. Агрегатные окна — нарастающие итоги, доля от общего, скользящие средние
  5. Функции смещенияLAG, LEAD, FIRST_VALUE, LAST_VALUE. Сравнение периодов и дельты
  6. Рамки окнаROWS BETWEEN, RANGE BETWEEN, точный контроль диапазона
  7. Продвинутые техникиCUME_DIST, PERCENT_RANK, окна внутри CTE, ABC-анализ
  8. Финальный проект — сквозной аналитический отчёт, как в реальной работе

На чём тренируемся

Аналитический отдел банка, который продаёт страховые продукты через сеть филиалов: клиенты, полисы, агенты, платежи, заявки на выплату, история статусов. Девять связанных таблиц.

Это не случайный выбор: страхование — область с естественными временными рядами и рейтингами. Продажи по месяцам, лучшие агенты, динамика выплат — ровно те задачи, ради которых оконные функции и придумали.

Нужен уверенный базовый SQL
Вы должны свободно писать SELECT с WHERE, соединять таблицы через JOIN, группировать через GROUP BY с HAVING и понимать подзапросы. Если это пока не так — сначала пройдите наш курс «SQL в MySQL: от нуля до оконных функций», он готовит ровно к этому.

Для кого этот курс

Курс для тех, кто уже пишет SQL, но пока обходится без оконных функций. – Junior-аналитики данных, которым на собеседовании на Middle задали вопрос про ROW_NUMBER — и стало неловко – Разработчики, которые умеют в JOIN и GROUP BY, но собирают нарастающий итог коррелированным подзапросом – BI-специалисты и дата-инженеры, желающие разобраться системно, а не по обрывкам со StackOverflow – Студенты IT-специальностей и все, кто готовится к техническому интервью Типичная ситуация: вам нужно вывести топ-3 агента в каждом филиале. Вы знаете, что это делается «как-то через окна», но каждый раз лезете гуглить.

Начальные требования

Нужен уверенный базовый SQL. До старта вы должны уметь:

  • писать SELECT с WHERE, AND/OR, IN, BETWEEN, LIKE
  • соединять 2–3 таблицы через INNER JOIN и LEFT JOIN
  • группировать данные через GROUP BY с SUM, COUNT, AVG, MIN, MAX
  • фильтровать группы через HAVING
  • писать подзапросы в WHERE и в FROM

Знать оконные функции и CTE не нужно — этому и учим. Если базового SQL пока нет, начните с курса «SQL в MySQL: от нуля до оконных функций».

Устанавливать MySQL не требуется: база и проверка запросов работают в браузере.

Наши преподаватели

Как проходит обучение

Каждый урок идёт по цепочке Теория → Пример → Тест → Практика, где практика занимает около 65% времени.

  • Теория — ровно в том объёме, который нужен для следующей задачи
  • Пример — каждый новый концепт показан на живых банковских данных
  • Тест — проверяем понимание смысла, а не запоминание синтаксиса
  • Практика — SQL-задачи с автопроверкой прямо в браузере
  • Внутри модуля: от «одна функция, одна таблица» до «несколько окон, CTE и JOIN»

Курс проходится в своём темпе, дедлайнов нет.

Программа курса

загружаем...
Certificate

Сертификат

Сертификат Stepik

Отзывы прошедших курс

5
из 5
из 1 отзыва
1 отзыв
загружаем...

Что вы получаете

  • 173 SQL-задачи с автоматической проверкой и понятной обратной связью
  • 129 тестов на понимание смысла, а не на зазубривание синтаксиса
  • Реалистичную банковскую базу из 9 связанных таблиц
  • Шпаргалку по синтаксису OVER(), PARTITION BY и рамкам окна
  • Разбор классических ловушек: LAST_VALUE с рамкой по умолчанию, RANK против DENSE_RANK
  • Финальный проект — сквозной аналитический отчёт, который не стыдно показать на собеседовании

Сколько стоит обучение

Old Price: 1 990  Discount Price: 995 
Вы попробовали и поняли, что вам сейчас не подходит этот курс? Ничего страшного, мы вернём вам деньги в течение 30-ти дней после покупки.

Часто задаваемые вопросы

Расскажите о курсе друзьям

Old Price: 1 990  Discount Price: 995