Оконные функции SQL: задачи с собеседований аналитика

55 задач Лёгкие, средние, сложные С эталонными решениями Решение в браузере
Оконные функции — самая частая тема на собеседовании аналитика данных уровня Middle и Senior. Если ты не умеешь использовать ROW_NUMBER, RANK, LAG, LEAD и PARTITION BY — оффер не получишь. Здесь собраны 47 задач с реальных интервью на оконные функции — от лёгких (нумерация строк) до hard (когортный анализ через окна).
Начать решать задачи →

Все задачи на «Оконные функции» (55)

FAQ: частые вопросы про оконные функции

Что такое оконные функции в SQL?

Оконные функции — это функции, применяемые к набору строк, связанных с текущей строкой. В отличие от GROUP BY, они не сворачивают строки, а добавляют значение в каждую строку результата. Базовый синтаксис: FUNCTION() OVER (PARTITION BY ... ORDER BY ...).

Чем ROW_NUMBER отличается от RANK?

ROW_NUMBER даёт уникальный номер каждой строке (1, 2, 3, 4). RANK даёт одинаковый ранг для равных значений и пропускает следующий (1, 2, 2, 4). DENSE_RANK не пропускает (1, 2, 2, 3).

Когда использовать LAG/LEAD?

LAG берёт значение из предыдущей строки, LEAD — из следующей. Используются для расчёта изменений (выручка месяц-к-месяцу), retention (был ли юзер активен в прошлом периоде), сессионизации.

Что значит PARTITION BY?

PARTITION BY разбивает данные на группы для применения оконной функции. Например, ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY created_at) даст порядковый номер заказа внутри каждого пользователя.

Связанные темы SQL

Агрегации · JOIN-запросы · CTE (Common Table Expressions) · Подзапросы · Работа с датами · Строковые функции · Условная логика · Retention-анализ

Открыть весь SQL-тренажёр (325 задач) →