Jedným z bežných štatistických výpočtov, ktoré sa vyskytujú aj pri správe databázy, je percentil.
Percentil je štatistická miera, ktorá nám umožňuje rozdeliť súbor údajov na rovnaké časti segmentov. Úlohou percentilov je poskytnúť prehľad o distribúcii údajov, čo je spôsob, akým chápeme, ako sú hodnoty rozložené.
V tomto návode sa naučíme, ako môžeme vypočítať percentily v SQL na rozdelenie údajov do rôznych segmentov.
Vzorová tabuľka
Začnime nastavením základnej tabuľky, ktorá obsahuje vzorové údaje na demonštračné účely. To nám pomáha ilustrovať, ako sa správajú rôzne metódy výpočtu percentilov a výsledný výstup.
Vytvorme tabuľku s názvom „produkty“, ktorá obsahuje informácie o potravinách. Klauzula „vytvoriť tabuľku“ je nasledovná:
Produkty CREATE TABLE (
product_id INT PRIMARY KEY AUTO_INCREMENT,
názov_produktu VARCHAR( 255 ),
kategória VARCHAR( 255 ),
cena DECIMAL( 10 , 2 ),
množstvo INT,
expiration_date DATE,
čiarový kód BIGINT
);
Po vytvorení tabuľky môžeme pokračovať a pridať vzorové údaje do tabuľky. Môžeme použiť nasledujúce príkazy „vložiť“:
vložiťdo
produkty (názov_produktu,
kategória,
cena,
množstvo,
dátum spotreby,
čiarový kód)
hodnoty ( Kuchársky klobúk 25 cm ,
'pekáreň' ,
24,67 ,
57 ,
'2023-09-09' ,
2854509564204 );
vložiť
do
produkty (názov_produktu,
kategória,
cena,
množstvo,
dátum spotreby,
čiarový kód)
hodnoty ( „Prepeličie vajcia – konzervované“ ,
'špajza' ,
17,99 ,
67 ,
'2023-09-29' ,
1708039594250 );
vložiť
do
produkty (názov_produktu,
kategória,
cena,
množstvo,
dátum spotreby,
čiarový kód)
hodnoty ( „Káva – capuccino s vaječným likérom“ ,
'pekáreň' ,
92,53 ,
10 ,
'2023-09-22' ,
8704051853058 );
vložiť
do
produkty (názov_produktu,
kategória,
cena,
množstvo,
dátum spotreby,
čiarový kód)
hodnoty ( „Hruška – ostnatá“ ,
'pekáreň' ,
65,29 ,
48 ,
'2023-08-23' ,
5174927442238 );
vložiť
do
produkty (názov_produktu,
kategória,
cena,
množstvo,
dátum spotreby,
čiarový kód)
hodnoty ( „Cestoviny – anjelské vlasy“ ,
'špajza' ,
48,38 ,
59 ,
'2023-08-05' ,
8008123704782 );
vložiť
do
produkty (názov_produktu,
kategória,
cena,
množstvo,
dátum spotreby,
čiarový kód)
hodnoty ( „Víno – Prosecco Valdobiaddene“ ,
'produkovať' ,
44,18 ,
3 ,
'2023-03-13' ,
6470981735653 );
Na konci by ste mali mať nasledovnú tabuľku:
SQL percentil
Ako môžete hádať, spôsob výpočtu percentilu sa môže líšiť v závislosti od databázového stroja. Najbežnejšou metódou je však použitie funkcií PERCENTILE_DISC() a PERCENTILE_CONT().
Tieto funkcie sú súčasťou štandardnej špecifikácie SQL (2003). Preto musí byť podporovaný PostgreSQL a Oracle.
PERCENTILE_CONT()
Začnime funkciou PERCENTILE_CONT(). Táto funkcia nám umožňuje vypočítať percentilové hodnoty ako zlomok súboru údajov.
Funkcia vracia interpolované hodnoty, ktoré nemusia byť presné pre konkrétny údajový bod vo vašej množine údajov.
Syntax funkcie je nasledovná:
PERCENTILE_CONT(percentil) WITHIN SKUPINA ( OBJEDNAŤ BY názov_stĺpca) NAD ();Funkcia akceptuje nasledujúce parametre:
- Percentil – určuje požadovanú hodnotu percentilu (0,0 až 1,0).
- column_name – Označuje stĺpec, pre ktorý chceme vypočítať percentil.
- NAD () – Nastaví funkciu okna tak, aby špecifikovala celý súbor údajov.
Príklad použitia tejto funkcie je nasledujúci:
SELECTPERCENTILE_CONT( 0,5 ) V RÁMCI SKUPINA ( OBJEDNAŤ PODĽA ceny) NAD () AKO medián
OD
Produkty;
Poznámka: Daný dotaz funguje iba v PostgreSQL, pretože MySQL nepodporuje použitie WITHIN GROUP.
Toto vypočíta 50 th percentil poskytnutých údajov.
PERCENTILE_DISC()
Na výpočet percentilovej hodnoty ako diskrétnej hodnoty môžeme použiť funkciu PERCENTILE_DISC() priamo z množiny údajov.
Funkcia vráti hodnotu, ktorá zodpovedá skutočnému údajovému bodu.
Syntax funkcie je nasledovná (PostgreSQL):
PERCENTILE_DISC(percentil) WITHIN SKUPINA ( OBJEDNAŤ BY názov_stĺpca) NAD ();Príklad výstupu je nasledujúci:
VYBRAŤPERCENTILE_DISC( 0,25 ) V RÁMCI SKUPINA ( OBJEDNAŤ PODĽA ceny) NAD () AKO percentil_25
OD
Produkty;
Toto by malo vypočítať 25 th percentil údajov.
Záver
Tento tutoriál sa zaoberal tým, ako používať rôzne funkcie na výpočet percentilov v databázach SQL.