Percentile SQL

Percentile Sql



Quali sono le due parole comuni che sono così strettamente correlate che penseresti che siano la stessa cosa? Per noi sviluppatori di database, sarebbe il database SQL e le statistiche.

Uno dei calcoli statistici più comuni utilizzati anche nell'amministrazione di database è il percentile.

Un percentile è una misura statistica che ci consente di dividere un set di dati in parti uguali di segmenti. Il ruolo dei percentili è quello di fornire una visione approfondita della distribuzione dei dati, ovvero il modo in cui comprendiamo come sono distribuiti i valori.







In questo tutorial impareremo come calcolare i percentili in SQL per dividere i dati in vari segmenti.



Tabella campione

Iniziamo creando una tabella di base che contiene dati di esempio a scopo dimostrativo. Questo ci aiuta ad illustrare come si comportano i vari metodi di calcolo dei percentili e l'output risultante.



Creiamo una tabella chiamata 'prodotti' che contiene le informazioni sulla spesa. La clausola “crea tabella” è la seguente:





prodotti CREA TAVOLA (

product_id INT CHIAVE PRIMARIA AUTO_INCREMENT,

nome_prodotto VARCHAR( 255 ),

categoria VARCHAR( 255 ),

prezzo DECIMALE( 10 , 2 ),

quantità INT,

data_scadenza DATA,

codice a barre BIGINT

);

Una volta creata la tabella, possiamo procedere e aggiungere i dati di esempio nella tabella. Possiamo usare le seguenti istruzioni “insert”:

inserire
in
prodotti (nome_prodotto,
categoria,
prezzo,
quantità,
data di scadenza,
codice a barre)
valori ( 'Cappello da Cuoco 25cm' ,
'forno' ,
24.67 ,
57 ,
'2023-09-09' ,
2854509564204 );

inserire
in
prodotti (nome_prodotto,
categoria,
prezzo,
quantità,
data di scadenza,
codice a barre)
valori ( 'Uova di quaglia - in scatola' ,
'dispensa' ,
17.99 ,
67 ,
'29-09-2023' ,
1708039594250 );

inserire
in
prodotti (nome_prodotto,
categoria,
prezzo,
quantità,
data di scadenza,
codice a barre)
valori ( 'Caffè - Cappuccino allo Zabaione' ,
'forno' ,
92,53 ,
10 ,
'2023-09-22' ,
8704051853058 );

inserire
in
prodotti (nome_prodotto,
categoria,
prezzo,
quantità,
data di scadenza,
codice a barre)
valori ( 'Pera - Spinoso' ,
'forno' ,
65.29 ,
48 ,
'23-08-2023' ,
5174927442238 );

inserire
in
prodotti (nome_prodotto,
categoria,
prezzo,
quantità,
data di scadenza,
codice a barre)
valori ( 'Pasta - Capelli d'angelo' ,
'dispensa' ,
48.38 ,
59 ,
'2023-08-05' ,
8008123704782 );

inserire
in
prodotti (nome_prodotto,
categoria,
prezzo,
quantità,
data di scadenza,
codice a barre)
valori ( 'Wine - Prosecco Valdobiaddene' ,
'produrre' ,
44.18 ,
3 ,
'2023-03-13' ,
6470981735653 );

Alla fine dovresti avere una tabella come segue:



Percentile SQL

Come puoi immaginare, il modo di calcolare il percentile può differire a seconda del motore di database. Tuttavia, il metodo più comune utilizza le funzioni PERCENTILE_DISC() e PERCENTILE_CONT().

Queste funzioni fanno parte della specifica SQL standard (2003). Pertanto, è destinato a essere supportato da PostgreSQL e Oracle.

PERCENTILE_CONT()

Cominciamo con la funzione PERCENTILE_CONT(). Questa funzione ci consente di calcolare i valori percentili come frazione del set di dati.

La funzione restituisce valori interpolati che potrebbero non essere precisi rispetto al punto dati specifico nel set di dati.

La sintassi della funzione è la seguente:

PERCENTILE_CONT(percentile) ENTRO GRUPPO ( ORDINE BY nome_colonna) OVER ();

La funzione accetta i seguenti parametri:

  • Percentile: specifica il valore percentile desiderato (da 0,0 a 1,0).
  • nome_colonna – Indica la colonna per la quale desideriamo calcolare il percentile.
  • OVER () – Imposta la funzione della finestra per specificare l'intero set di dati.

Un esempio su come utilizzare questa funzione è il seguente:

SELEZIONARE

PERCENTILE_CONT( 0,5 ) ENTRO GRUPPO ( ORDINE PER prezzo) OLTRE () AS mediana

DA

prodotti;

Nota: la query specificata funziona solo in PostgreSQL poiché MySQL non supporta l'uso di WITHIN GROUP.

Questo calcola i 50 th percentile dei dati forniti.

PERCENTILE_DISCO()

Possiamo utilizzare la funzione PERCENTILE_DISC() per calcolare il valore percentile come valore discreto direttamente dal set di dati.

La funzione restituisce un valore che corrisponde a un punto dati effettivo.

La sintassi della funzione è la seguente (PostgreSQL):

PERCENTILE_DISC(percentile) ENTRO GRUPPO ( ORDINE BY nome_colonna) OVER ();

Un esempio di output è il seguente:

SELEZIONARE

PERCENTILE_DISCO( 0,25 ) ENTRO GRUPPO ( ORDINE PER prezzo) OVER () AS percentile_25

DA

prodotti;

Questo dovrebbe calcolare 25 th percentile dei dati.

Conclusione

Questo tutorial ha spiegato come utilizzare le varie funzioni per calcolare i percentili nei database SQL.