Занятие 38. Оконные функции: функции смещения и выбора
⚡ Кратко: суть занятия
Функции смещения и выбора позволяют смотреть не только на текущую строку, но и на соседние или крайние строки внутри окна.
LAG() возвращает значение из предыдущей строки, а LEAD() — из следующей строки в порядке, заданном внутри OVER.
FIRST_VALUE(), LAST_VALUE() и NTH_VALUE() выбирают первое, последнее или n-е значение в окне.
Ключевая конструкция урока: function(column) OVER (PARTITION BY group_column ORDER BY sort_column).
Минимальный пример: LAG(creation_date) OVER (PARTITION BY supplier_id ORDER BY creation_date) показывает предыдущую дату заказа поставщика.
Топ-3 ошибки: забыть ORDER BY, перепутать направление LEAD/LAG, использовать LAST_VALUE без явной рамки окна.
📖 О чём это занятие
- Разберём оконные функции
LEAD,LAG,FIRST_VALUE,LAST_VALUE,NTH_VALUE. - Научимся сравнивать заказ с предыдущим или следующим заказом внутри группы.
- Разберём практику по таблице
purchase_ordersи домашнее задание поpurchase_order_details. - Отдельно зафиксируем важную ловушку
LAST_VALUE: результат зависит от рамки окна.
📚 Что повторить перед изучением
- Занятие 37: функции ранжирования — синтаксис
OVERи сортировка внутри окна. - Занятие 34: агрегирующие оконные функции —
PARTITION BYи отличие отGROUP BY. - Занятие 26: CTE — удобно для фильтрации результата оконной функции.
🎯 Что изучать дальше
Следующее занятие — Занятие 39: Практикум 10.