Probleem:
U wilt records rangschikken door rangschikkingsposities over te slaan na rijen met dezelfde rangorde.
Voorbeeld:
Onze database heeft een tabel met de naam championship
met gegevens in de volgende kolommen:id
(primaire sleutel), user_name
, en score
.
id | gebruikersnaam | score |
111 | Jan | 12 |
112 | Maria | 23 |
115 | Lisa | 45 |
120 | Alan | 23 |
221 | Chris | 23 |
Laten we de namen van alle gebruikers en hun scores weergeven, gesorteerd in aflopende volgorde en gerangschikt op score.
Oplossing 1:
SELECT RANK() OVER(ORDER BY score DESC) AS rank_place, user_name, score FROM championship;
Deze zoekopdracht levert de volgende rangorde op:
rank_place | gebruikersnaam | score |
1 | Lisa | 45 |
2 | Maria | 23 |
2 | Alan | 23 |
2 | Chris | 23 |
5 | Jan | 12 |
Merk op dat het rangnummer van 1 tot 5 is, gesorteerd op score in aflopende volgorde.
Discussie:
Gebruik RANK
als u rangschikkingsposities wilt overslaan na rijen met dezelfde rangorde. In ons voorbeeld hadden Mary, Alan en Chris allemaal dezelfde rangorde van 2. De volgende in aanmerking komende positie is 5 (berekend uit 2 + 3 rijen met dezelfde rangorde).