Sobes.tech
Middle

Čím sa líši RANK od DENSE_RANK?

sobes.tech AI

Odpoveď od AI

Funkcie RANK a DENSE_RANK sú funkcie okna v SQL, ktoré priraďujú poradové čísla riadkom v rámci okna, ale líšia sa v správaní pri rovnakých hodnotách (t.j. pri remíze).

  • RANK(): Priraďuje rovnaké poradové číslo rovnakým hodnotám, ale preskakuje nasledujúce poradové čísla. Napríklad, ak dve riadky zdieľajú prvé miesto, obe dostanú poradové číslo 1, a nasledujúci riadok dostane poradové číslo 3 (preskočí sa 2).

  • DENSE_RANK(): Taktiež priraďuje rovnaké poradové číslo rovnakým hodnotám, ale nepreskakuje poradové čísla. V rovnakom príklade, dve riadky s poradovým číslom 1, nasledujúce dostane poradové číslo 2.

Príklad:

Hodnota RANK() DENSE_RANK()
100 1 1
100 1 1
90 3 2
80 4 3

Takto DENSE_RANK() poskytuje husté poradové čísla bez medzier, zatiaľ čo RANK() berie do úvahy medzery pri rovnosti.