SQL-i protsentiil

Sql I Protsentiil



Millised on kaks tavalist sõna, mis on nii tihedalt seotud, et arvate, et need on samad? Meile, andmebaasi arendajatele, oleks see SQL-i andmebaas ja statistika.

Üks levinumaid statistilisi arvutusi, mis tuleb isegi andmebaasi haldamisel ette, on protsentiil.

Protsentiil on statistiline mõõt, mis võimaldab jagada andmestiku segmentide võrdseteks osadeks. Protsentiilide roll on anda ülevaade andmete jaotusest, mille abil saame aru, kuidas väärtusi jaotatakse.







Selles õpetuses õpime, kuidas saame arvutada protsentiile SQL-is, et jagada andmed erinevateks segmentideks.



Näidistabel

Alustame põhitabeli seadistamisega, mis sisaldab näidisandmeid demonstratsiooni eesmärgil. See aitab meil illustreerida, kuidas erinevad protsentiilide arvutamise meetodid käituvad ja sellest tulenev väljund.



Loome tabeli nimega 'tooted', mis sisaldab toidukaupade teavet. Klausel 'tabeli loomine' on järgmine:





CREATE TABLE tooted (

product_id INT PRIMARY KEY AUTO_INCREMENT,

toote_nimi VARCHAR( 255 ),

kategooria VARCHAR( 255 ),

hind DECIMAAL( 10 , 2 ),

kogus INT,

expiration_date DATE,

vöötkood BIGINT

);

Kui oleme tabeli loonud, saame jätkata ja lisada tabelisse näidisandmed. Saame kasutada järgmisi 'sisesta' avaldusi:

sisestada
sisse
tooted (toote_nimi,
kategooria,
hind,
kogus,
expiration_date,
vöötkood)
väärtused ( 'koka müts 25 cm' ,
'pagariäri' ,
24.67 ,
57 ,
'2023-09-09' ,
2854509564204 );

sisestada
sisse
tooted (toote_nimi,
kategooria,
hind,
kogus,
expiration_date,
vöötkood)
väärtused ( 'Vutimunad – konserveeritud' ,
'sahver' ,
17.99 ,
67 ,
'2023-09-29' ,
1708039594250 );

sisestada
sisse
tooted (toote_nimi,
kategooria,
hind,
kogus,
expiration_date,
vöötkood)
väärtused ( 'Kohv – munanoog capuccino' ,
'pagariäri' ,
92,53 ,
10 ,
'2023-09-22' ,
8704051853058 );

sisestada
sisse
tooted (toote_nimi,
kategooria,
hind,
kogus,
expiration_date,
vöötkood)
väärtused ( 'Pirn – kipitav' ,
'pagariäri' ,
65,29 ,
48 ,
'2023-08-23' ,
5174927442238 );

sisestada
sisse
tooted (toote_nimi,
kategooria,
hind,
kogus,
expiration_date,
vöötkood)
väärtused ( 'Pasta – inglijuuksed' ,
'sahver' ,
48.38 ,
59 ,
'2023-08-05' ,
8008123704782 );

sisestada
sisse
tooted (toote_nimi,
kategooria,
hind,
kogus,
expiration_date,
vöötkood)
väärtused ( 'Vein – Prosecco Valdobiaddene' ,
'tootma' ,
44.18 ,
3 ,
'2023-03-13' ,
6470981735653 );

Lõpus peaks teil olema järgmine tabel:



SQL-i protsentiil

Nagu võite arvata, võib protsentiili arvutamise viis andmebaasimootorist olenevalt erineda. Kõige tavalisem meetod on aga funktsioonide PERCENTILE_DISC() ja PERCENTILE_CONT() kasutamine.

Need funktsioonid on osa standardse SQL-i spetsifikatsioonist (2003). Seetõttu peavad seda toetama PostgreSQL ja Oracle.

PERCENTILE_CONT()

Alustame funktsiooniga PERCENTILE_CONT(). See funktsioon võimaldab meil arvutada protsentiili väärtused andmestiku murdosana.

Funktsioon tagastab interpoleeritud väärtused, mis ei pruugi olla täpsed teie andmestiku konkreetsele andmepunktile.

Funktsiooni süntaks on järgmine:

PERCENTILE_CONT(protsentiil) WITHIN GRUPP ( TELLIMINE BY veeru_nimi) OVER ();

Funktsioon aktsepteerib järgmisi parameetreid:

  • Protsentiil – see määrab soovitud protsentiili väärtuse (0,0 kuni 1,0).
  • veeru_nimi – see tähistab veergu, mille protsentiili soovime arvutada.
  • ÜLE () – see määrab akna funktsiooni kogu andmestiku määramiseks.

Selle funktsiooni kasutamise näide on järgmine:

VALI

PERCENTILE_CONT( 0.5 ) SEES GRUPP ( TELLIMINE Hinna järgi) ÜLE () mediaanina

FROM

tooted;

Märkus. Antud päring töötab ainult PostgreSQL-is, kuna MySQL ei toeta WITHIN GROUP kasutamist.

See arvutab 50 th protsentiil esitatud andmetest.

PERCENTILE_DISC()

Funktsiooni PERCENTILE_DISC() saame kasutada protsentiili väärtuse arvutamiseks diskreetse väärtusena otse andmekogumist.

Funktsioon tagastab väärtuse, mis vastab tegelikule andmepunktile.

Funktsiooni süntaks on järgmine (PostgreSQL):

PERCENTILE_DISC(protsentiil) WITHIN GRUPP ( TELLI BY veeru_nimi) OVER ();

Näidisväljund on järgmine:

VALI

PERCENTILE_DISC( 0,25 ) SEES GRUPP ( TELLIMINE Hinna järgi) ÜLE () AS protsentiil_25

FROM

tooted;

See peaks arvutama 25 th andmete protsentiil.

Järeldus

See õpetus käsitles, kuidas kasutada SQL-andmebaasides protsentiilide arvutamiseks erinevaid funktsioone.