Middle
Mis vahe on RANK ja DENSE_RANK vahel?
sobes.tech AI
Vastus AI-lt
RANK ja DENSE_RANK on SQL aknās funkcijas, kas piešķir rindām rangu logā, bet atšķiras pēc uzvedības, ja ir vienādas vērtības (t.i., vienlīdzības).
-
RANK(): Piešķir vienādu rangu vienādām vērtībām, bet izlaiž nākamos rangus. Piemēram, ja divas rindas dalās pirmajā vietā, abas saņem 1. rangu, bet nākamā rinda saņem 3. rangu (izlaižot 2).
-
DENSE_RANK(): Arī piešķir vienādu rangu vienādām vērtībām, bet neizlaiž rangus. Tajā pašā piemērā, divas rindas ar 1. rangu, nākamā saņem 2. rangu.
Piemērs:
| Vērtība | RANK() | DENSE_RANK() |
|---|---|---|
| 100 | 1 | 1 |
| 100 | 1 | 1 |
| 90 | 3 | 2 |
| 80 | 4 | 3 |
Tādējādi, DENSE_RANK() sniedz blīvus rangus bez tukšumiem, bet RANK() ņem vērā tukšumus, ja ir vienādas vērtības.