Sobes.tech
Назад к вопросам
Junior
30

В чём отличие RANK() от DENSE_RANK()?

Компании, где спрашивали
Яндекс

Ответ от нейросети

sobes.tech AI

Функции RANK() и DENSE_RANK() используются для присвоения рангов строкам в отсортированном наборе данных, но они отличаются тем, как обрабатывают одинаковые значения (т.е. как учитывают пропуски в рангах).

  • RANK() присваивает одинаковый ранг одинаковым значениям, но при этом пропускает следующие ранги. Например, если два элемента занимают 1-е место, следующий получит ранг 3.

  • DENSE_RANK() также присваивает одинаковый ранг одинаковым значениям, но не пропускает ранги. В том же примере следующий после двух первых с рангом 1 получит ранг 2.

Пример:

Значение RANK() DENSE_RANK()
100 1 1
100 1 1
90 3 2
80 4 3