Middle
18
Чем отличается RANK от DENSE_RANK?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
RANK и DENSE_RANK — это оконные функции в SQL, которые присваивают ранги строкам в пределах окна, но отличаются поведением при наличии одинаковых значений (т.е. при «ничьих»).
-
RANK(): Присваивает одинаковый ранг одинаковым значениям, но пропускает следующие ранги. Например, если две строки делят 1-е место, обе получают ранг 1, а следующая строка получит ранг 3 (2 пропущено).
-
DENSE_RANK(): Также присваивает одинаковый ранг одинаковым значениям, но не пропускает ранги. В том же примере две строки с рангом 1, следующая получит ранг 2.
Пример:
| Значение | RANK() | DENSE_RANK() |
|---|---|---|
| 100 | 1 | 1 |
| 100 | 1 | 1 |
| 90 | 3 | 2 |
| 80 | 4 | 3 |
Таким образом, DENSE_RANK() даёт плотные ранги без пропусков, а RANK() учитывает пропуски при равенстве.