Sobes.tech
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.