Чему вы научитесь
- Писать оконные функции с OVER, PARTITION BY и ORDER BY и объяснять, чем окно отличается от GROUP BY (окно не схлопывает строки)
- Ранжировать данные через ROW_NUMBER, RANK, DENSE_RANK и NTILE и осознанно выбирать нужную функцию по поведению на ничьих
- Строить топ-N по группам, Nth highest, топ-10% и считать медиану окном — без PERCENTILE_CONT, которого нет в MySQL
- Сравнивать строки во времени функциями LAG и LEAD: период-к-периоду, MoM/YoY, рост и падение, корректный default для первой строки
- Применять FIRST_VALUE, LAST_VALUE и NTH_VALUE и понимать, почему рамка решает всё, а LAST_VALUE без полной рамки врёт
- Строить агрегаты в окнах и управлять фреймами ROWS и RANGE: скользящие средние, нарастающие итоги, доли, RANGE … INTERVAL по календарным датам
- Решать прикладные кейсы окнами: дедупликация, forward-fill пропусков, поиск выбросов, gaps & islands, когорты, сессии, Парето 80/20
- Решать и вслух защищать классические задачи SQL-собеседований бигтеха и банков на оконных функциях
- Читать чужие оконные запросы, находить типичные грабли окон и обходить ограничения MySQL (IGNORE NULLS, GROUPS, EXCLUDE, FILTER)
О курсе
Оконные функции — это водораздел между «умею писать SELECT» и «думаю как аналитик данных». Они дают то, что не умеет GROUP BY: видеть и отдельную строку, и агрегат рядом с ней. Цель курса — провести вас от первой ROW_NUMBER до уровня, на котором вы спокойно решаете задачи на окна с собеседований бигтеха и банков. Это единственный курс линейки целиком про оконные функции, и он покрывает уровень Senior по этой теме примерно на 92%.
Почему именно этот курс. Окна обычно разбросаны по верхам в общих SQL-курсах — пара функций ранжирования и всё. Здесь окнам посвящён весь курс: 7 модулей, 39 уроков, ~400 шагов и ~195 SQL-задач с автопроверкой, от механики окна до фреймов RANGE по датам и gaps & islands. Это не теория ради теории, а практика с первых минут: преобладают completion-задачи — дан скелет запроса, нужно заполнить OVER(...), PARTITION BY и рамку, с лестницей подсказок в 1–3 ступени. Доля продвинутых задач ★★★ — 20–25%, а в модуле собеседований до 35%.
Что вы приобретёте. После курса вы уверенно строите аналитические витрины на окнах: накопительный доход и доли нарастающим итогом, скользящие средние, MoM/YoY-темпы, рейтинги с tie-break, дедупликацию и forward-fill, поиск серий подряд. И главное — вы умеете объяснить своё решение вслух, как этого ждут на интервью.
Особенности курса:
— Прикладные кейсы и собес. Модуль M6 — главное конкурентное преимущество: реальные тестовые задания компаний и mock-собес (N-я по величине зарплата, топ-N в каждой категории, медиана по группе, дни подряд активности) плюс чеклист «как защищать оконное решение на интервью».
— Честная работа с диалектом. Движок автопроверки — строго MySQL 8.0, где оконные функции нативны: всё ранжирование, LAG/LEAD, фреймы ROWS и RANGE (включая RANGE … INTERVAL по датам). То, чего в MySQL 8 нет — фреймы GROUPS, клаузы EXCLUDE и FILTER — дано как локальные 🐘-задания на PostgreSQL (настоящий синтаксис вы выполняете у себя) плюс парный обход на платформе: CASE-эмуляция FILTER, арифметика для EXCLUDE, DENSE_RANK+ROWS для GROUPS. В конце каждой темы — раздел «В других СУБД».
— Акцент на граблях окон. Разбираем то, на чём спотыкаются все: почему окно нельзя положить в WHERE (обёртка в CTE), почему LAST_VALUE без полной рамки даёт «текущую» строку, как неявная рамка при ORDER BY превращает агрегат в накопительный, как обойти отсутствие IGNORE NULLS и PERCENTILE_CONT в MySQL.
— Сквозная база с «дырами под окна». Та же учебная БД University v3 (15 таблиц, MySQL 8, snake_case), что и в Курсе 1, но с детерминированно заложенными ситуациями именно под окна: ничьи в баллах для RANK, серии посещений с пропусками для gaps & islands, дубли для дедупликации, сгущение дат платежей в 7-дневном окне для RANGE INTERVAL, NULL-оценки для forward-fill.
— Ранняя победа и автопроверка в браузере. Первую рабочую оконную функцию вы пишете уже на шаге 3 первого содержательного урока. Теория — короткими шагами с разбором частых ошибок, ~55 интерактивных тестов на каждый раздел, ничего ставить не нужно.
Что нужно будет делать: читать короткие текстовые лекции с примерами, проходить тесты на понимание, решать SQL-задачи с автопроверкой прямо в браузере, разбирать свои ошибки, проходить практикумы и капстоуны.
Для кого этот курс
Начальные требования
Это вторая ступень по сложности — курс предполагает уверенный SQL уровня аналитик.
— Пройденная предыдущая ступень — Курс 1 «SQL для аналитика: подзапросы, CTE и продвинутые функции» (та же учебная БД University v3). Если этих тем нет, начните с него — курс прямо отправляет туда при пробеле.
— Уверенный GROUP BY и агрегаты: COUNT, SUM, AVG, MIN, MAX, HAVING.
— Умение писать подзапросы: скалярные, в WHERE и FROM, EXISTS.
— Умение писать и читать CTE (WITH), в том числе цепочки CTE.
— Понимание логического порядка выполнения запроса: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY.
Ничего устанавливать не нужно — все задачи решаются и проверяются прямо на платформе на движке MySQL 8.0. Для 4 локальных 🐘-заданий по желанию пригодится PostgreSQL у себя, но на прохождение курса это не влияет.
Наши преподаватели
Как проходит обучение
Курс текстово-интерактивный и полностью проходится в браузере, в своём темпе и без дедлайнов.
— Короткие текстовые лекции с примерами на учебной базе University v3 и разбором частых ошибок — живым языком, без академической сухости.
— SQL-задачи с автопроверкой (~195) прямо в браузере на движке MySQL 8.0: пишете запрос — система сразу сверяет результат. Преобладают completion-задачи (заполни OVER(...)/PARTITION BY/рамку) с лестницей подсказок в 1–3 ступени.
— Интерактивные тесты к каждому разделу (~55): выбор ответа, сопоставление, заполнение пропусков и другие форматы.
— Локальные 🐘-задания на PostgreSQL для GROUPS, EXCLUDE и FILTER, которых нет в MySQL 8: настоящий синтаксис у себя плюс парный обход на платформе.
— Практикумы и капстоуны в конце модулей, включая капстоун «рейтинговая витрина» и финальный капстоун «аналитическая витрина на окнах» с автопроверкой и эталонным разбором.
— Отдельный модуль-разбор M7: консолидация всех заданий и тестов, блок «MySQL-эмуляция vs настоящий PostgreSQL» и собес-чеклист.
— Поддержка автора в комментариях и обсуждения под каждым шагом.
Логика курса — от простого к сложному с ранней победой: первую рабочую оконную функцию вы пишете уже на шаге 3, а дальше шаг за шагом доходите до фреймов RANGE по датам, gaps & islands и mock-собеса
Программа курса
Сертификат
Что вы получаете
- Востребованный навык: оконные функции — водораздел между junior- и senior-уровнем SQL, их спрашивают на собеседованиях аналитиков, дата-инженеров и backend-разработчиков.
- Объём практики: ~195 SQL-задач с автопроверкой и ~55 интерактивных тестов на единой реалистичной базе — теорию сразу отрабатываете на деле, заявленное покрытие уровня Senior ~92%.
- Готовность к собеседованию: реальные тестовые задания бигтеха и банков, mock-собес и чеклист «как защищать оконное решение на интервью».
- Честное знание диалекта: что нативно в MySQL 8, а что — особенность PostgreSQL (GROUPS, EXCLUDE, FILTER, PERCENTILE_CONT) и как это обойти.
- Поддержку автора в комментариях и обсуждения под шагами.
- Доступ в своём темпе: возвращайтесь к материалам и пересдавайте задания сколько нужно.
- Сертификат Stepik по итогам прохождения.
- Мост дальше: после оконных функций логичная следующая ступень — Курс 3 «Проектирование и управление базами данных» и/или флагман Курс 4 «SQL под капотом: индексы, оптимизация и транзакции». Финальный шаг курса и разбор M7 содержат CTA на следующую ступень.