Problem:
Chcesz dodać pozycję rankingową do wierszy kolejno, nawet jeśli wiersze mają te same wartości.
Przykład:
Nasza baza danych zawiera tabelę o nazwie competition z danymi w następujących kolumnach:id (klucz podstawowy), first_name , last_name i score .
| id | imię | nazwisko | wynik |
| 11 | Jan | Thomas | 345 |
| 14 | Maryi | Johnson | 222 |
| 16 | Lisa | Brązowy | 154 |
| 23 | Alan | Blake | 222 |
| 32 | Chrystusa | Taylor | 154 |
Wyświetlmy wszystkie szczegóły dotyczące uczniów:ich nazwisko, imię i wyniki posortowane według score w kolejności malejącej. Nie chcemy pomijać numerów pozycji, jeśli niektóre wyniki są takie same dla więcej niż jednego ucznia.
Rozwiązanie 1:
SELECT DENSE_RANK() OVER(ORDER BY score DESC) AS d_rank, first_name, last_name, score FROM competition;
Zauważ, że ranga wynosi od 1 do 3.
Dyskusja:
Użyj DENSE_RANK jeśli nie chcesz pomijać pozycji rankingowych po wierszach o tej samej pozycji. W naszym przykładzie, mimo że Mary i Alan mają tę samą rangę 2, pozycja Lisy to 3.