Menu
Coddy logo textTech

Funzioni RANK e DENSE_RANK

Fa parte della sezione Fondamenti del percorso SQL di Coddy. Lezione 65 di 72.

ROW_NUMBER() è un tipo di funzione di classificazione e ce ne sono altre due: RANK() e DENSE_RANK().

La funzione RANK() numera le righe come ROW_NUMBER(), ma assegna numeri identici alle stesse righe e salta dei numeri. DENSE_RANK() è simile a RANK(), ma non salta numeri.

Per esempio:

idlevel
15
26
36
47
57
65
SELECT id, 
	ROW_NUMBER() OVER (ORDER BY level) as row_num,
	RANK() OVER (ORDER BY level) as row_rank,
	DENSE_RANK() OVER (ORDER BY level) as row_dense_rank
FROM table1

Questo restituirà:

idrow_numrow_rankrow_dense_rank
1111
6211
2332
3432
4553
5653

Spiegazione:

  • ROW_NUMBER(): Sempre univoco: 1, 2, 3, 4, 5, 6
  • RANK():
    • livello 5 (2 righe): entrambe ottengono il rango 1
    • livello 6 (2 righe): entrambe ottengono il rango 3 (salta il 2)
    • livello 7 (2 righe): entrambe ottengono il rango 5 (salta il 4)
  • DENSE_RANK():
    • livello 5 (2 righe): entrambe ottengono il rango 1
    • livello 6 (2 righe): entrambe ottengono il rango 2 (nessun salto)
    • livello 7 (2 righe): entrambe ottengono il rango 3 (nessun salto)
challenge icon

Sfida

Facile

Tabelle e colonne disponibili:

  • medals: region, medal_color, medal_count

Crea una query che mostri la regione, il conteggio totale delle medaglie (la somma di tutte le medaglie, indipendentemente dal colore) e due tipi di classifiche:

  1. Un regular_rank (con salti) sulla somma delle medaglie
  2. Un dense_rank (senza salti) sulla somma delle medaglie

Ordina i risultati per:

order by total_medals desc, region asc

Provalo tu

quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Playground SQL