← К оглавлению занятия

📝 Задания

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

⚡ Кратко: задания

Практикум 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.

📝 Практические задания

1

Соседние даты получения

Для каждого product_id выведите date_received, предыдущую и последующую даты получения продукта. Оставьте только строки, где date_received не является пропуском.

2

Предыдущая дата заказа через CTE

Найдите date_received и предыдущую дату отправки заказа. Сначала оставьте уникальные пары purchase_order_id, date_received, исключите пустые даты, запишите результат в CTE.

3

Максимум quantity и минимум unit_cost

Выведите максимальное quantity и минимальный unit_cost для каждого inventory_id с помощью FIRST_VALUE.

4

Среднее отличие unit_cost

Выведите одно значение: насколько в среднем unit_cost каждой строки отличается от максимального unit_cost внутри inventory_id.

5

Топ-5 продуктов

Выберите топ-5 продуктов с максимальным quantity, используя DENSE_RANK.

6

Тринадцатая строка

Пронумеруйте строки по убыванию inventory_id и выведите только 13-ю строку.

Проверка понимания

Выберите один вариант ответа. После клика правильный ответ подсветится зелёным.

Вопрос 1

Почему во втором задании нужен CTE?

Вопрос 2

Какой функцией удобно получить следующую дату получения продукта?

Вопрос 3

Как выбрать 13-ю строку после ROW_NUMBER?

Вопрос 4

Что делает DENSE_RANK в топ-5?

Вопрос 5

Как получить максимум через FIRST_VALUE?

Вопрос 6

Почему date_received фильтруется до окна?