Čí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.