Занятие 37. Оконные функции: функции ранжирования
⚡ Кратко: суть темы
Функции ранжирования — ROW_NUMBER, RANK, DENSE_RANK, NTILE — присваивают каждой строке номер или группу внутри окна, не сворачивая исходные строки.
ROW_NUMBER()— уникальный номер строки в порядке сортировки окна.RANK()— ранг с пропусками при одинаковых значениях;DENSE_RANK()— ранг без пропусков.NTILE(n)— разбивает строки наnпримерно равных групп (квартиль, третиль и т.д.).
Что запомнить: все ранжирующие функции требуют ORDER BY внутри OVER; PARTITION BY нужен, когда ранжирование ведётся внутри групп.
Топ-3 ошибки: 1) путать RANK и DENSE_RANK; 2) забывать ORDER BY в окне; 3) фильтровать результат оконной функции в WHERE вместо подзапроса.
📖 О чём это занятие
Занятие посвящено ранжирующим оконным функциям. Мы научимся нумеровать строки, строить рейтинги товаров и сотрудников, заменять сложные подзапросы простым окном и делить выборку на равные группы с помощью NTILE.
Что изучим
📚 Что повторить перед изучением
- ← Занятие 36: Summary session 9 — повторение оконных функций.
- Занятие 34: Агрегирующие оконные функции — синтаксис
OVERиPARTITION BY. - Занятие 33: Оконные функции. Общие концепции.
🎯 Что изучать дальше
Следующее занятие — Занятие 38: Оконные функции: функции смещения и выбора.