SQL percentil

Sql Percentil



Která dvě běžná slova jsou tak blízce příbuzná, že byste si mysleli, že jsou stejná? Pro nás databázové vývojáře by to byla SQL databáze a statistiky.

Jedním z běžných statistických výpočtů, které se objevují i ​​při správě databáze, je percentil.

Percentil je statistická míra, která nám umožňuje rozdělit soubor dat na stejné části segmentů. Úlohou percentilů je poskytnout náhled na distribuci dat, což je způsob, jakým rozumíme tomu, jak jsou hodnoty rozloženy.







V tomto tutoriálu se naučíme, jak můžeme vypočítat percentily v SQL pro rozdělení dat do různých segmentů.



Vzorová tabulka

Začněme nastavením základní tabulky, která obsahuje vzorová data pro demonstrační účely. To nám pomáhá ilustrovat, jak se chovají různé metody výpočtu percentilů a výsledný výstup.



Vytvořme tabulku nazvanou „produkty“, která obsahuje informace o potravinách. Klauzule „vytvořit tabulku“ je následující:





CREATE TABLE produkty (

product_id INT PRIMARY KEY AUTO_INCREMENT,

název_produktu VARCHAR( 255 ),

kategorie VARCHAR( 255 ),

cena DECIMAL( 10 , 2 ),

množství INT,

expiration_date DATE,

čárový kód VELKÝ

);

Jakmile jsme vytvořili tabulku, můžeme pokračovat a přidat ukázková data do tabulky. Můžeme použít následující příkazy „vložit“:

vložit
do
produkty (název_produktu,
kategorie,
cena,
Množství,
Datum spotřeby,
čárový kód)
hodnoty ( 'Kuchařská čepice 25 cm' ,
'pekařství' ,
24,67 ,
57 ,
'2023-09-09' ,
2854509564204 );

vložit
do
produkty (název_produktu,
kategorie,
cena,
Množství,
Datum spotřeby,
čárový kód)
hodnoty ( „Křepelčí vejce – konzerva“ ,
'spíž' ,
17,99 ,
67 ,
'2023-09-29' ,
1708039594250 );

vložit
do
produkty (název_produktu,
kategorie,
cena,
Množství,
Datum spotřeby,
čárový kód)
hodnoty ( 'Káva – vaječný likér capuccino' ,
'pekařství' ,
92,53 ,
10 ,
'2023-09-22' ,
8704051853058 );

vložit
do
produkty (název_produktu,
kategorie,
cena,
Množství,
Datum spotřeby,
čárový kód)
hodnoty ( 'Hruška - pichlavý' ,
'pekařství' ,
65,29 ,
48 ,
'2023-08-23' ,
5174927442238 );

vložit
do
produkty (název_produktu,
kategorie,
cena,
Množství,
Datum spotřeby,
čárový kód)
hodnoty ( 'Těstoviny - andělské vlasy' ,
'spíž' ,
48,38 ,
59 ,
'2023-08-05' ,
8008123704782 );

vložit
do
produkty (název_produktu,
kategorie,
cena,
Množství,
Datum spotřeby,
čárový kód)
hodnoty ( 'Víno - Prosecco Valdobiaddene' ,
'vyrobit' ,
44,18 ,
3 ,
'2023-03-13' ,
6470981735653 );

Na konci byste měli mít následující tabulku:



SQL percentil

Jak můžete hádat, způsob výpočtu percentilu se může lišit v závislosti na databázovém stroji. Nejběžnější metodou je však použití funkcí PERCENTILE_DISC() a PERCENTILE_CONT().

Tyto funkce jsou součástí standardní specifikace SQL (2003). Proto musí být podporován PostgreSQL a Oracle.

PERCENTILE_CONT()

Začněme funkcí PERCENTILE_CONT(). Tato funkce nám umožňuje vypočítat percentilové hodnoty jako zlomek datové sady.

Funkce vrací interpolované hodnoty, které nemusí být přesné pro konkrétní datový bod ve vaší datové sadě.

Syntaxe funkce je následující:

PERCENTILE_CONT(percentil) WITHIN SKUPINA ( OBJEDNAT BY název_sloupce) NAD ();

Funkce přijímá následující parametry:

  • Percentil – Určuje požadovanou hodnotu percentilu (0,0 až 1,0).
  • název_sloupce – Označuje sloupec, pro který chceme vypočítat percentil.
  • NAD () – Nastaví funkci okna tak, aby specifikovala celou datovou sadu.

Příklad použití této funkce je následující:

VYBRAT

PERCENTILE_CONT( 0,5 ) V RÁMCI SKUPINA ( OBJEDNAT PODLE ceny) NAD () JAKO medián

Z

produkty;

Poznámka: Daný dotaz funguje pouze v PostgreSQL, protože MySQL nepodporuje použití WITHIN GROUP.

Tím se počítá 50 čt percentil poskytnutých dat.

PERCENTILE_DISC()

Pomocí funkce PERCENTILE_DISC() můžeme vypočítat hodnotu percentilu jako diskrétní hodnotu přímo z datové sady.

Funkce vrací hodnotu, která odpovídá skutečnému datovému bodu.

Syntaxe funkce je následující (PostgreSQL):

PERCENTILE_DISC(percentil) WITHIN SKUPINA ( OBJEDNAT BY název_sloupce) NAD ();

Příklad výstupu je následující:

VYBRAT

PERCENTILE_DISC( 0,25 ) V RÁMCI SKUPINA ( OBJEDNAT PODLE ceny) NAD () JAKO percentil_25

Z

produkty;

To by mělo vypočítat 25 čt percentil dat.

Závěr

Tento tutoriál se zabýval tím, jak používat různé funkce k výpočtu percentilů v databázích SQL.