Sobes.tech
Middle
19

Чем отличается RANK от DENSE_RANK?

Companies where asked
СБЕРСБЕР

Answer from AI

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() учитывает пропуски при равенстве.