Sobes.tech
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() взема предвид пропуските при равенство.