← К курсу

Занятие 39. Практикум 10

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

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

Практикум 10 закрепляет оконные функции ранжирования, смещения и выбора на таблице purchase_order_details.

Ключевые конструкции: LAG, LEAD, FIRST_VALUE, DENSE_RANK, ROW_NUMBER, CTE.

Минимальный пример: LAG(date_received) OVER (PARTITION BY product_id ORDER BY date_received) показывает предыдущую дату получения продукта.

Практический фокус — сначала получить аналитический столбец, а затем фильтровать результат через CTE или подзапрос.

Топ-3 ошибки: не задать сортировку для LAG/LEAD, фильтровать ROW_NUMBER в том же WHERE, забыть убрать строки с пустым date_received.

📖 О чём это занятие

  • Выполним шесть задач из источника по таблице purchase_order_details.
  • Отработаем соседние даты получения продукта через LAG и LEAD.
  • Используем FIRST_VALUE для максимума и минимума внутри inventory_id.
  • Повторим DENSE_RANK и ROW_NUMBER для топ-N и выбора конкретной строки.

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

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

Следующее занятие — Занятие 40: Summary session 10.