sql >> Databasteknik >  >> RDS >> Database

Hur man lägger till rankningspositioner för rader i SQL med RANK()

Problem:

Du vill ranka poster genom att hoppa över rankningspositioner efter rader som har samma rankning.

Exempel:

Vår databas har en tabell som heter championship med data i följande kolumner:id (primärnyckel), user_name och score .

id användarnamn poäng
111 John 12
112 Maria 23
115 Lisa 45
120 Alan 23
221 Chris 23

Låt oss visa alla användares namn och deras poäng sorterade i fallande ordning och rangordnade efter poäng.

Lösning 1:

SELECT RANK() OVER(ORDER BY score DESC) AS rank_place,
  user_name,
  score
FROM championship;

Den här frågan returnerar följande rankning:

rank_place användarnamn poäng
1 Lisa 45
2 Maria 23
2 Alan 23
2 Chris 23
5 John 12

Lägg märke till att rangnumret är från 1 till 5, sorterat efter poäng i fallande ordning.

Diskussion:

Använd RANK om du vill hoppa över rankningspositioner efter rader med samma rankning. I vårt exempel hade Mary, Alan och Chris alla samma rankning på 2. Nästa kvalificerade position är 5 (beräknat från 2 + 3 rader med samma ranking).


  1. Hur ser man loggfiler i MySQL?

  2. Hur man får id från databasen genom att klicka på listview-objektet i Android

  3. Crystal Reports vs Microsoft SQL Server Reporting Services

  4. Hur man ändrar storlek på formulärkontroller i Access 2016