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

🔖 Справочник

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

⚡ Кратко: команды

Summary session 10 повторяет два блока оконных функций: ранжирование и смещение/выбор.

Для ранжирования используем ROW_NUMBER, RANK, DENSE_RANK, NTILE.

Для сравнения соседних строк используем LAG и LEAD; для крайних значений — FIRST_VALUE и LAST_VALUE.

Минимальный пример: DENSE_RANK() OVER (ORDER BY quantity DESC) строит рейтинг по количеству, а LAG(date_received) OVER (ORDER BY date_received) находит предыдущую дату.

Топ-3 ошибки: путать RANK и DENSE_RANK, забывать ORDER BY в окне, фильтровать результат окна до внешнего SELECT.

🔖 Справочник занятия

Команды и функции ниже взяты из темы урока и оформлены как быстрый справочник.

ROW_NUMBER

Уникальная нумерация строк.

ROW_NUMBER() OVER (ORDER BY column)

Выбор 13-й строки по inventory_id.

RANK

Рейтинг с пропусками.

RANK() OVER (ORDER BY quantity DESC)

Использовался в домашнем задании для ранга по quantity.

DENSE_RANK

Рейтинг без пропусков.

DENSE_RANK() OVER (ORDER BY quantity DESC)

Используется для топ-5 продуктов.

NTILE

Разделение строк на равные группы.

NTILE(3) OVER (ORDER BY sale_amount)

Повторение из блока ранжирования.

LAG

Предыдущее значение.

LAG(date_received) OVER (ORDER BY date_received)

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

LEAD

Следующее значение.

LEAD(date_received) OVER (ORDER BY date_received)

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

FIRST_VALUE

Первое значение окна.

FIRST_VALUE(unit_cost) OVER (PARTITION BY inventory_id ORDER BY unit_cost)

Минимальная цена после сортировки по возрастанию.

Полный справочник курса: SQL Reference. Документация по MongoDB в этом уроке не используется.