Problém:
Chcete seřadit záznamy přeskočením pozic v pořadí po řádcích, které mají stejné pořadí.
Příklad:
Naše databáze obsahuje tabulku s názvem championship
s údaji v následujících sloupcích:id
(primární klíč), user_name
a score
.
id | uživatelské_jméno | skóre |
111 | Jan | 12 |
112 | Marie | 23 |
115 | Lisa | 45 |
120 | Alan | 23 |
221 | Chris | 23 |
Zobrazme jména všech uživatelů a jejich skóre seřazené v sestupném pořadí a seřazené podle skóre.
Řešení 1:
SELECT RANK() OVER(ORDER BY score DESC) AS rank_place, user_name, score FROM championship;
Tento dotaz vrátí následující hodnocení:
rank_place | uživatelské_jméno | skóre |
1 | Lisa | 45 |
2 | Marie | 23 |
2 | Alan | 23 |
2 | Chris | 23 |
5 | Jan | 12 |
Všimněte si, že číslo pozice je od 1 do 5, seřazené podle skóre v sestupném pořadí.
Diskuse:
Použijte RANK
pokud chcete přeskočit pozice v pořadí po řádcích se stejnou pozicí. V našem příkladu měli Mary, Alan a Chris stejné hodnocení 2. Další vhodná pozice je 5 (počítáno ze 2 + 3 řádků se stejnou pozicí).