SQL Percentil

Sql Percentil



Hvad er de to almindelige ord, der er så tæt beslægtede, at du tror, ​​de er ens? For os databaseudviklere ville det være SQL-databasen og statistik.

En af de almindelige statistiske beregninger, der kommer op selv i databaseadministration, er en percentil.

En percentil er et statistisk mål, der giver os mulighed for at opdele et datasæt i lige dele af segmenter. Percentilers rolle er at give et indblik i datafordelingen, hvilket er hvordan vi forstår, hvordan værdierne er spredt ud.







I denne tutorial lærer vi, hvordan vi kan beregne percentilerne i SQL for at opdele dataene i forskellige segmenter.



Eksempel tabel

Lad os starte med at opsætte en grundlæggende tabel, der indeholder et eksempel på data til demonstrationsformål. Dette hjælper os med at illustrere, hvordan de forskellige metoder til beregning af percentilerne opfører sig og det resulterende output.



Lad os oprette en tabel kaldet 'produkter', der indeholder købmandsoplysningerne. Klausulen 'opret tabel' er som følger:





OPRET TABLE produkter (

product_id INT PRIMARY KEY AUTO_INCREMENT,

produktnavn VARCHAR( 255 ),

kategori VARCHAR( 255 ),

pris DECIMAL( 10 , 2 ),

mængde INT,

udløbsdato DATE,

stregkode BIGINT

);

Når vi har oprettet tabellen, kan vi fortsætte og tilføje eksempeldataene i tabellen. Vi kan bruge følgende 'indsæt'-udsagn:

indsætte
ind i
produkter (produktnavn,
kategori,
pris,
antal,
udløbsdato,
stregkode)
værdier ( 'Kokkehat 25 cm' ,
'bageri' ,
24,67 ,
57 ,
'2023-09-09' ,
2854509564204 );

indsætte
ind i
produkter (produktnavn,
kategori,
pris,
antal,
udløbsdato,
stregkode)
værdier ( 'Vagtelæg - dåse' ,
'spisekammer' ,
17,99 ,
67 ,
'2023-09-29' ,
1708039594250 );

indsætte
ind i
produkter (produktnavn,
kategori,
pris,
antal,
udløbsdato,
stregkode)
værdier ( 'Kaffe - Egg Nog Capuccino' ,
'bageri' ,
92,53 ,
10 ,
'2023-09-22' ,
8704051853058 );

indsætte
ind i
produkter (produktnavn,
kategori,
pris,
antal,
udløbsdato,
stregkode)
værdier ( 'Pære - stikkende' ,
'bageri' ,
65,29 ,
48 ,
'23-08-2023' ,
5174927442238 );

indsætte
ind i
produkter (produktnavn,
kategori,
pris,
antal,
udløbsdato,
stregkode)
værdier ( 'Pasta - Angel Hair' ,
'spisekammer' ,
48,38 ,
59 ,
'2023-08-05' ,
8008123704782 );

indsætte
ind i
produkter (produktnavn,
kategori,
pris,
antal,
udløbsdato,
stregkode)
værdier ( 'Vin - Prosecco Valdobiaddene' ,
'fremstille' ,
44,18 ,
3 ,
'2023-03-13' ,
6470981735653 );

Til sidst skal du have en tabel som følger:



SQL Percentil

Som du kan gætte, kan måden at beregne percentilen på variere afhængigt af databasemotoren. Den mest almindelige metode er dog at bruge funktionerne PERCENTILE_DISC() og PERCENTILE_CONT().

Disse funktioner er en del af Standard SQL-specifikationen (2003). Derfor er det bundet til at blive understøttet af PostgreSQL og Oracle.

PERCENTILE_CONT()

Lad os starte med PERCENTILE_CONT()-funktionen. Denne funktion giver os mulighed for at beregne percentilværdierne som en brøkdel af datasættet.

Funktionen returnerer en interpoleret værdi, som muligvis ikke er præcis for det specifikke datapunkt i dit datasæt.

Funktionens syntaks er som følger:

PERCENTIL_CONT(percentil) INDENFOR GRUPPE ( BESTILLE AF kolonnenavn) OVER ();

Funktionen accepterer følgende parametre:

  • Percentil – Den angiver den ønskede percentilværdi (0,0 til 1,0).
  • kolonnenavn – Det angiver den kolonne, som vi ønsker at beregne percentilen for.
  • OVER () – Det indstiller vinduesfunktionen til at specificere hele datasættet.

Et eksempel på, hvordan du bruger denne funktion, er som følger:

VÆLG

PERCENTILE_CONT( 0,5 ) INDENFOR GRUPPE ( BESTILLE EFTER pris) OVER () SOM median

FRA

Produkter;

Bemærk: Den givne forespørgsel virker kun i PostgreSQL, da MySQL ikke understøtter brugen af ​​INDEN GRUPPE.

Dette beregner de 50 th percentil af de leverede data.

PERCENTILE_DISC()

Vi kan bruge PERCENTILE_DISC()-funktionen til at beregne percentilværdien som en diskret værdi direkte fra datasættet.

Funktionen returnerer en værdi, der svarer til et faktisk datapunkt.

Funktionens syntaks er som følger (PostgreSQL):

PERCENTILE_DISC(percentil) INDENFOR GRUPPE ( BESTILLE AF kolonnenavn) OVER ();

Et eksempel på output er som følger:

VÆLG

PERCENTILE_DISC( 0,25 ) INDENFOR GRUPPE ( BESTILLE EFTER pris) OVER () SOM percentil_25

FRA

Produkter;

Dette skulle beregne 25 th percentil af data.

Konklusion

Denne vejledning dækkede, hvordan man bruger de forskellige funktioner til at beregne percentilerne i SQL-databaser.