Ответ вслух Middle SQL для аналитика обновлено

Оконные функции

Вопрос

Что такое оконные функции, чем они отличаются от GROUP BY и для каких задач аналитика нужны?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Оконная функция вычисляет значение по набору связанных строк и добавляет его к каждой строке, строки не схлопываются, в отличие от GROUP BY. PARTITION BY делит данные на группы, ORDER BY задаёт порядок внутри группы.

Что должно прозвучать в ответе

  • Считают по группе строк, не схлопывая их

  • PARTITION BY задаёт группу, ORDER BY порядок внутри

  • ROW_NUMBER, RANK для последней записи и топ-N

  • LAG, LEAD для разницы между соседними событиями

  • Нарастающий итог и рамка окна

Что могут спросить следом

  • Чем RANK отличается от DENSE_RANK?
  • Почему оконную функцию нельзя использовать в WHERE?

Разбор

Оконная функция вычисляет значение по набору связанных строк и добавляет его к каждой строке, строки не схлопываются, в отличие от GROUP BY. PARTITION BY делит данные на группы, ORDER BY задаёт порядок внутри группы. ROW_NUMBER помогает взять последнюю запись по каждому объекту, например текущий статус заявки по истории. RANK и DENSE_RANK для топ-N с учётом равенства. LAG и LEAD считают время между событиями: сколько заявка ждала от одного статуса до следующего. SUM с ORDER BY даёт нарастающий итог. Окна вычисляются после WHERE и GROUP BY, поэтому фильтруют по ним во внешнем запросе.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.