Middle
Kuo skiriasi RANK nuo DENSE_RANK?
sobes.tech AI
Atsakymas iš AI
RANK ir DENSE_RANK yra lango funkcijos SQL, kurios priskiria eilutes eilės numerius lango viduje, tačiau skiriasi jų elgsena, kai yra lygios reikšmės (t. y. lygiųjų atveju).
-
RANK(): Priskiria tas pačias eilės numerius lygiosioms reikšmėms, tačiau praleidžia sekantį numerį. Pavyzdžiui, jei dvi eilutės dalijasi pirmąja vieta, abi gauna 1-ąją vietą, o sekanti eilutė gaus 3-ąją vietą (praleidžiant 2-ąją).
-
DENSE_RANK(): Taip pat priskiria tas pačias eilės numerius lygiosioms reikšmėms, tačiau neskiria jų tarpų. To paties pavyzdžio atveju, dvi eilutės su 1-ąja vieta, sekanti gaus 2-ąją vietą.
Pavyzdys:
| Reikšmė | RANK() | DENSE_RANK() |
|---|---|---|
| 100 | 1 | 1 |
| 100 | 1 | 1 |
| 90 | 3 | 2 |
| 80 | 4 | 3 |
Taip DENSE_RANK() duoda tankius rangus be tarpų, o RANK() atsižvelgia į tarpus, kai yra lygios reikšmės.