← К курсу

Занятие 38. Оконные функции: функции смещения и выбора

📁 Блок: SQL / MySQL / Оконные функции ⏱️ Время изучения: ~90 мин 🎯 Сложность: Продвинутая
#lead #lag #first_value #last_value #nth_value

⚡ Кратко: суть занятия

Функции смещения и выбора позволяют смотреть не только на текущую строку, но и на соседние или крайние строки внутри окна.

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: результат зависит от рамки окна.

📚 Что повторить перед изучением

🎯 Что изучать дальше

Следующее занятие — Занятие 39: Практикум 10.