Middle
Care este diferența dintre RANK și DENSE_RANK?
sobes.tech AI
Răspuns de la AI
RANK și DENSE_RANK sunt funcții de fereastră în SQL care atribuie ranguri rândurilor dintr-o fereastră, dar diferă în comportament în cazul valorilor egale (adică în cazul egalităților).
-
RANK(): Atribuie același rang valorilor egale, dar sare peste următoarele ranguri. De exemplu, dacă două rânduri împart locul întâi, ambele primesc rangul 1, iar următorul rând va primi rangul 3 (sărind rangul 2).
-
DENSE_RANK(): De asemenea, atribuie același rang valorilor egale, dar nu sare peste ranguri. În același exemplu, două rânduri cu rangul 1, următorul va avea rangul 2.
Exemplu:
| Valoare | RANK() | DENSE_RANK() |
|---|---|---|
| 100 | 1 | 1 |
| 100 | 1 | 1 |
| 90 | 3 | 2 |
| 80 | 4 | 3 |
Astfel, DENSE_RANK() oferă ranguri dense fără pauze, în timp ce RANK() ia în considerare pauzele în cazul egalităților.