Чему вы научитесь
- Объяснять, чем оконные функции отличаются от 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 и что такое рамка по умолчанию.Программа
- Датасет — знакомство с банковской базой из 9 таблиц
- Введение — чем
OVER()отличается отGROUP BY, синтаксис окна,PARTITION BY - Ранжирование —
ROW_NUMBER,RANK,DENSE_RANK,NTILE. Топ-N по группам, дедупликация, квартили - Агрегатные окна — нарастающие итоги, доля от общего, скользящие средние
- Функции смещения —
LAG,LEAD,FIRST_VALUE,LAST_VALUE. Сравнение периодов и дельты - Рамки окна —
ROWS BETWEEN,RANGE BETWEEN, точный контроль диапазона - Продвинутые техники —
CUME_DIST,PERCENT_RANK, окна внутри CTE, ABC-анализ - Финальный проект — сквозной аналитический отчёт, как в реальной работе
На чём тренируемся
Аналитический отдел банка, который продаёт страховые продукты через сеть филиалов: клиенты, полисы, агенты, платежи, заявки на выплату, история статусов. Девять связанных таблиц.
Это не случайный выбор: страхование — область с естественными временными рядами и рейтингами. Продажи по месяцам, лучшие агенты, динамика выплат — ровно те задачи, ради которых оконные функции и придумали.
Для кого этот курс
Начальные требования
Нужен уверенный базовый 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»
Курс проходится в своём темпе, дедлайнов нет.
Программа курса
Сертификат
Отзывы прошедших курс
Что вы получаете
- 173 SQL-задачи с автоматической проверкой и понятной обратной связью
- 129 тестов на понимание смысла, а не на зазубривание синтаксиса
- Реалистичную банковскую базу из 9 связанных таблиц
- Шпаргалку по синтаксису OVER(), PARTITION BY и рамкам окна
- Разбор классических ловушек: LAST_VALUE с рамкой по умолчанию, RANK против DENSE_RANK
- Финальный проект — сквозной аналитический отчёт, который не стыдно показать на собеседовании