Probleem:
U wilt een rangschikkingspositie toevoegen aan rijen opeenvolgend, zelfs als de rijen dezelfde waarden hebben.
Voorbeeld:
Onze database heeft een tabel met de naam competition met gegevens in de volgende kolommen:id (primaire sleutel), first_name , last_name , en score .
| id | voornaam | achternaam | score |
| 11 | Jan | Thomas | 345 |
| 14 | Maria | Johnson | 222 |
| 16 | Lisa | Bruin | 154 |
| 23 | Alan | Blake | 222 |
| 32 | Chris | Taylor | 154 |
Laten we alle details over studenten weergeven:hun achternaam, voornaam en scores gesorteerd op score in aflopende volgorde. We willen positienummers niet overslaan als sommige scores voor meer dan één leerling hetzelfde zijn.
Oplossing 1:
SELECT DENSE_RANK() OVER(ORDER BY score DESC) AS d_rank, first_name, last_name, score FROM competition;
Merk op dat de rangorde varieert van 1 tot 3.
Discussie:
Gebruik DENSE_RANK als u geen rangordeposities wilt overslaan na rijen met dezelfde rangorde. In ons voorbeeld, hoewel Mary en Alan dezelfde rang 2 hebben, is de positie voor Lisa 3.