SQL percentil

Sql Percentil



Aké sú dve bežné slová, ktoré spolu tak úzko súvisia, že by ste si mysleli, že sú rovnaké? Pre nás databázových vývojárov by to bola SQL databáza a štatistiky.

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:

SELECT

PERCENTILE_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.