Problém:
Chcete přidat pořadí pořadí do řádků po sobě, i když mají řádky stejné hodnoty.
Příklad:
Naše databáze má tabulku s názvem competition
s údaji v následujících sloupcích:id
(primární klíč), first_name
, last_name
a score
.
id | křestní_jméno | příjmení | skóre |
11 | Jan | Thomas | 345 |
14 | Marie | Johnson | 222 |
16 | Lisa | Hnědá | 154 |
23 | Alan | Blake | 222 |
32 | Chris | Taylor | 154 |
Zobrazme všechny podrobnosti o studentech:jejich příjmení, jméno a skóre seřazené podle score
v sestupném pořadí. Nechceme přeskočit čísla pozic, pokud jsou některá skóre stejná pro více než jednoho studenta.
Řešení 1:
SELECT DENSE_RANK() OVER(ORDER BY score DESC) AS d_rank, first_name, last_name, score FROM competition;
Všimněte si, že pořadí se pohybuje od 1 do 3.
Diskuse:
Použijte DENSE_RANK
pokud nechcete přeskočit pozice v pořadí po řádcích se stejnou pozicí. V našem příkladu, přestože Mary a Alan mají stejnou hodnost 2, pozice pro Lisu je 3.