Database
 sql >> Database >  >> RDS >> Database

Come aggiungere posizioni in classifica delle righe in SQL con RANK()

Problema:

Vuoi classificare i record saltando le posizioni in classifica dopo le righe che hanno lo stesso ranking.

Esempio:

Il nostro database ha una tabella chiamata championship con i dati nelle seguenti colonne:id (chiave primaria), user_name e score .

id nome_utente punteggio
111 Giovanni 12
112 Maria 23
115 Lisa 45
120 Alan 23
221 Cris 23

Mostriamo tutti i nomi degli utenti e i loro punteggi ordinati in ordine decrescente e classificati per punteggio.

Soluzione 1:

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

Questa query restituisce la seguente classifica:

rank_place nome_utente punteggio
1 Lisa 45
2 Maria 23
2 Alan 23
2 Cris 23
5 Giovanni 12

Si noti che il numero della classifica va da 1 a 5, ordinato per punteggio in ordine decrescente.

Discussione:

Usa RANK se vuoi saltare le posizioni in classifica dopo le righe con la stessa classifica. Nel nostro esempio, Mary, Alan e Chris avevano tutti la stessa classifica di 2. La successiva posizione idonea è 5 (calcolata da 2 + 3 righe con la stessa classifica).