Чему вы научитесь
Это не лекционный курс «про окна». Это тренажёр: 150 задач с автопроверкой, где каждая задача проверяется по результату запроса. Написал запрос — получил «Всё верно» или «Не верно» сразу, без ожидания проверяющего.
Вы пройдёте путь от разминки «GROUP BY vs OVER() — зачем вообще окна» через PARTITION BY и ORDER BY внутри окна, ранжирование (ROW_NUMBER, RANK, DENSE_RANK, NTILE), смещения (LAG, LEAD, FIRST_VALUE, LAST_VALUE), агрегаты с рамками (ROWS/RANGE BETWEEN, скользящие средние и нарастающие итоги) и CTE (обычные, вложенные, рекурсивные — иерархии и графы) — к финальному блоку из 20 задач «как на собеседовании».
Как устроена проверка. В каждой задаче есть таблица с данными и ожидаемый результат. Ваш запрос выполняется на тех же данных, и его результат сравнивается с эталоном по колонкам и строкам. Порядок строк, как правило, не важен — важен результат. Имена колонок должны совпадать с заданием, поэтому в условии всегда показан пример вывода.
Что вы сможете после курса:
- выбирать между GROUP BY и оконной функцией под конкретную задачу;
- ранжировать строки внутри групп и брать топ-N на группу одним запросом;
- считать нарастающие итоги, скользящие средние и разницу с предыдущей строкой;
- строить читаемые запросы на CTE вместо вложенных подзапросов;
- решать рекурсивные задачи: иерархии, генерация последовательностей, обход графов;
- объяснять на собеседовании разницу ROWS и RANGE и ловушки LAST_VALUE.
Курс полностью на практике: теория в начале каждого урока короткая и сразу закрепляется задачами. Если вы уже умеете писать SELECT, JOIN и GROUP BY — этого достаточно для старта.
О курсе
Для кого этот курс
Курс для тех, кто уже пишет базовый SQL (SELECT, WHERE, JOIN, GROUP BY) и хочет освоить оконные функции и CTE на практике: аналитики, разработчики, тестировщики и студенты, готовящиеся к собеседованиям и задачам на реальных данных.
Начальные требования
Базовый SQL: SELECT, фильтрация, сортировка, JOIN и GROUP BY. Опыт с конкретной СУБД не обязателен — все задачи решаются стандартным SQL, который работает и в MySQL, и в PostgreSQL, и в SQLite.