Mi a különbség a RANK és a DENSE_RANK között?
sobes.tech MI
Válasz az MI-től
A RANK és DENSE_RANK SQL ablakfüggvények, amelyek sorokat rendelnek a megadott ablakon belül, de különböznek abban, hogyan kezelik az egyenlő értékeket (azaz a holtversenyeket).
-
RANK(): Ugyanazokat az értékeket ugyanazzal a ranggal látja el, de kihagyja a következő rangokat. Például, ha két sor osztja az első helyet, mindkettő 1-es rangot kap, a következő sor pedig 3-as rangot, mert a 2 kihagyásra kerül.
-
DENSE_RANK(): Szintén ugyanazokat az értékeket ugyanazzal a ranggal látja el, de nem hagy ki rangokat. Ugyanabban a példában, két sor 1-es ranggal, a következő 2-es rangot kap.
Példa:
| Érték | RANK() | DENSE_RANK() |
|---|---|---|
| 100 | 1 | 1 |
| 100 | 1 | 1 |
| 90 | 3 | 2 |
| 80 | 4 | 3 |
Így a DENSE_RANK() sűrű rangokat ad, rangsorok között nincs kihagyás, míg a RANK() figyelembe veszi a kihagyásokat az egyenlőségek esetén.