Функции RANK() и DENSERANK() используются для присвоения рангов строкам в отсортированном наборе данных, но они отличаются тем, как обрабатывают одинаковые значения (т.е. как учитывают пропуски в рангах).
Чем отличается RANK от DENSE_RANK?
Функции RANK() и DENSERANK() используются для присвоения рангов строкам в отсортированном наборе данных, но они отличаются тем, как обрабатывают одинаковые значения (т.е. как учитывают пропуски в рангах).
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Функции 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 |