Problem:
Du vil tilføje en rangeringsposition til rækker fortløbende, selvom rækkerne har de samme værdier.
Eksempel:
Vores database har en tabel ved navn competition med data i følgende kolonner:id (primær nøgle), first_name , last_name , og score .
| id | fornavn | efternavn | score |
| 11 | John | Thomas | 345 |
| 14 | Mary | Johnson | 222 |
| 16 | Lisa | Brun | 154 |
| 23 | Alan | Blake | 222 |
| 32 | Chris | Taylor | 154 |
Lad os vise alle detaljer om elever:deres efternavn, fornavn og score sorteret efter score i faldende rækkefølge. Vi ønsker ikke at springe positionsnumre over, hvis nogle resultater er ens for mere end én elev.
Løsning 1:
SELECT DENSE_RANK() OVER(ORDER BY score DESC) AS d_rank, first_name, last_name, score FROM competition;
Bemærk, at rangen varierer fra 1 til 3.
Diskussion:
Brug DENSE_RANK hvis du ikke vil springe rangeringspositioner over efter rækker med samme rang. I vores eksempel er positionen for Lisa 3, selvom Mary og Alan har samme rang 2.