Sammanfattning: I den här handledningen kommer du att lära dig om MySQL DENSE_RANK()
-funktionen och hur du använder den för att hitta rangordningen för en rad i en partition eller en resultatuppsättning.
Introduktion till MySQL DENSE_RANK-funktionen
DENSE_RANK()
är en fönsterfunktion som tilldelar en rangordning för varje rad i en partition eller resultatuppsättning utan luckor i rangordningsvärden.
Rankningen av en rad ökas med ett från antalet distinkta rangvärden som kommer före raden.
Syntaxen för DENSE_RANK()
-funktionen är följande:
Code language: SQL (Structured Query Language) (sql)
I den här syntaxen:
- För det första delar
PARTITION BY
-klausulen upp de resultatmängder som produceras avFROM
-klausulen i partitioner. FunktionenDENSE_RANK()
tillämpas på varje partition. - För det andra anger
ORDER BY
-klausulen i vilken ordning raderna i varje partition somDENSE_RANK()
-funktionen verkar på.
Om en partition har två eller flera rader med samma rangvärde kommer var och en av dessa rader att tilldelas samma rangvärde.
Till skillnad från RANK()
-funktionen returnerar DENSE_RANK()
-funktionen alltid på varandra följande rangvärden.
Antag att vi har en tabell t
med några provdata enligt följande:
Code language: SQL (Structured Query Language) (sql)
Följande anvisning använder DENSE_RANK()
-funktionen för att tilldela varje rad en rang:
Code language: SQL (Structured Query Language) (sql)
Här är resultatet:
MySQL DENSE_RANK() function example
Vi kommer att använda tabellen sales
som skapades i handledningen för fönsterfunktionen för demonstrationen.
I följande instruktion används DENSE_RANK()
-funktionen för att rangordna försäljningsanställda efter försäljningsbelopp.
Code language: SQL (Structured Query Language) (sql)
Utmatningen ser ut på följande sätt:
I det här exemplet:
- För det första delade
PARTITION BY
-klausulen upp resultatmängderna i partitioner med hjälp av räkenskapsår. - För det andra specificerade
ORDER BY
-klausulen ordningen för försäljningsanställda efter försäljning i fallande ordning. - För det tredje tillämpas
DENSE_RANK()
-funktionen på varje partition med den ordning för rader som specificeras avORDER BY
-klausulen.
I den här handledningen har du lärt dig hur du använder MySQL-funktionen DENSE_RANK()
för att rangordna rader i varje partition i en resultatmängd.
- Har du nytta av den här handledningen?
- JaNej