Оконные функции SQL: топ-N, последний заказ и накопительный итог

Задачи SQL на оконные функции: топ-N по группам, последний заказ, сессии и накопительные показатели.

Состав подборки: 3 вопроса с выбором ответа, 1 задание с текстовым ответом, 6 задач на код. Условия и формат проверки указаны на странице каждой задачи.

Разберите маленький пример

Если у клиента два заказа с одинаковой датой, сортировки только по дате недостаточно для однозначного выбора последнего. Добавьте подходящий уникальный ключ. Для топ-N заранее решите: нужно ровно N строк или все участники с одинаковым результатом на границе.

На что обратить внимание

  • PARTITION BY отделяет группы, ORDER BY задаёт порядок внутри них.
  • Для накопительной суммы проверьте рамку окна и обработку одинаковых значений сортировки.
  • Семь строк и семь календарных дней совпадают только при подходящей плотности данных.
  • Результат окна часто нужно фильтровать на следующем уровне запроса, например во внешнем SELECT.

Порядок практики

  1. SUM OVER и PARTITION BY в SQL: сравните суммы — выбор ответа.
  2. Оконная сумма SQL: сохранить строки и добавить итог группы — выбор ответа.
  3. Оконная функция SQL с ORDER BY: рамка по умолчанию — выбор ответа.
  4. Нарастающий итог SQL: одинаковые даты и порядок строк — текстовый ответ.
  5. SQL топ-N в каждой группе: два товара по продажам — код.
  6. Последняя запись в группе SQL: заказ каждого клиента — код.
  7. SQL: Выделение пользовательских сессий — Номер сессии и позиция клика — код.
  8. SQL: Календарная таблица и пропущенные даты — Непрерывный отчёт о звонках — код.
  9. SQL: Скользящие показатели по календарным периодам — Семидневная сумма и неполное начало ряда — код.
  10. SQL: Агрегация, оконные вычисления и фильтрация — Категории-лидеры и доля в продажах — код.

Куда двигаться дальше

Если базовые SELECT и JOIN уже знакомы, посмотрите платный курс «Продвинутый SQL».

Смешанная тренировка к SQL-собеседованию.