Продвинутый
Как работают оконные функции ROW_NUMBER(), RANK() и DENSE_RANK()?
Все три функции нумеруют строки, но по-разному обрабатывают одинаковые значения (ничьи):
Допустим, у нас есть баллы: 100, 100, 90, 80.
- ROW_NUMBER(): Дает уникальный номер каждой строке подряд, игнорируя ничьи. Результат: 1, 2, 3, 4.
- RANK(): Дает одинаковый ранг при ничьей, но пропускает следующие номера. Результат: 1, 1, 3, 4.
- DENSE_RANK(): Дает одинаковый ранг при ничьей и НЕ пропускает номера (плотный ранг). Результат: 1, 1, 2, 3.