Summary: in questo tutorial, imparerete la funzione MySQL DENSE_RANK() e come applicarla per trovare il rango della riga in una partizione o set di risultati.
Introduzione alla funzione MySQL DENSE_RANK
La DENSE_RANK() è una funzione finestra che assegna un rango ad ogni riga in una partizione o set di risultati senza interruzioni nei valori di rango.
Il rango di una riga è aumentato di uno dal numero di valori di rango distinti che precedono la riga.
La sintassi della funzione DENSE_RANK() è la seguente:
Code language: SQL (Structured Query Language) (sql)
In questa sintassi:
- Prima, la clausola
PARTITION BYdivide l’insieme dei risultati prodotti dalla clausolaFROMin partizioni. La funzioneDENSE_RANK()viene applicata ad ogni partizione. - In secondo luogo, la clausola
ORDER BYspecifica l’ordine delle righe in ogni partizione su cui opera la funzioneDENSE_RANK().
Se una partizione ha due o più righe con lo stesso valore di rango, a ciascuna di queste righe verrà assegnato lo stesso rango.
A differenza della funzione RANK(), la funzione DENSE_RANK() restituisce sempre valori di rango consecutivi.
Supponiamo di avere una tabella t con alcuni dati campione come segue:
Code language: SQL (Structured Query Language) (sql)
La seguente dichiarazione usa la funzione DENSE_RANK() per assegnare un rango ad ogni riga:
Code language: SQL (Structured Query Language) (sql)
Ecco il risultato:

MySQL DENSE_RANK() function example
Per la dimostrazione useremo la tabella sales creata nel tutorial della funzione window.

La seguente dichiarazione usa la funzione DENSE_RANK() per classificare gli impiegati delle vendite in base all’importo delle vendite.
Code language: SQL (Structured Query Language) (sql)
L’output è il seguente:

In questo esempio:
- Prima, la clausola
PARTITION BYha diviso i risultati in partizioni usando l’anno fiscale. - Secondo, la clausola
ORDER BYha specificato l’ordine dei dipendenti delle vendite per vendite in ordine decrescente. - Terzo, la funzione
DENSE_RANK()viene applicata a ogni partizione con l’ordine delle righe specificato dalla clausolaORDER BY.
In questo tutorial, hai imparato a usare la funzione DENSE_RANK() di MySQL per classificare le righe in ogni partizione di un set di risultati.
- Questo tutorial è stato utile?
- SìNo