Middle
Каква е разликата между RANK и DENSE_RANK?
sobes.tech AI
Отговор от AI
RANK и DENSE_RANK са функции за прозорец в SQL, които присвояват рангове на редовете в рамките на прозорец, но се различават по поведението си при равни стойности (т.е. при равенство).
-
RANK(): Присвоява еднакъв ранг на равни стойности, но пропуска следващите рангове. Например, ако две реда делят първото място, и двете получават ранг 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() взема предвид пропуските при равенство.