Ü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:
sisestadasisse
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:
VALIPERCENTILE_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:
VALIPERCENTILE_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.