SQL Percentile

Sql Percentile



Ano ang dalawang karaniwang salita na napakalapit na magkaugnay na sa tingin mo ay pareho sila? Para sa amin na mga developer ng database, ito ay ang SQL database at mga istatistika.

Isa sa mga karaniwang kalkulasyon ng istatistika na lumalabas kahit na sa pangangasiwa ng database ay isang percentile.

Ang percentile ay isang statistical measure na nagbibigay-daan sa amin na hatiin ang isang dataset sa pantay na bahagi ng mga segment. Ang tungkulin ng mga percentile ay magbigay ng insight sa pamamahagi ng data na kung saan ay kung paano namin nauunawaan kung paano nagkakalat ang mga halaga.







Sa tutorial na ito, malalaman natin kung paano natin makalkula ang mga percentile sa SQL upang hatiin ang data sa iba't ibang mga segment.



Halimbawang Talahanayan

Magsimula tayo sa pamamagitan ng pag-set up ng pangunahing talahanayan na naglalaman ng sample na data para sa mga layunin ng pagpapakita. Nakakatulong ito sa amin na ilarawan kung paano kumikilos ang iba't ibang paraan ng pagkalkula ng mga percentile at ang resultang output.



Gumawa tayo ng talahanayan na tinatawag na 'mga produkto' na naglalaman ng impormasyon sa grocery. Ang sugnay na 'lumikha ng talahanayan' ay ang mga sumusunod:





GUMAWA NG MGA produkto ng TABLE (

product_id INT PRIMARY KEY AUTO_INCREMENT,

product_name VARCHAR( 255 ),

kategorya VARCHAR( 255 ),

DECIMAL ng presyo( 10 , 2 ),

dami INT,

expiration_date DATE,

barcode BIGINT

);

Kapag nagawa na namin ang talahanayan, maaari kaming magpatuloy at magdagdag ng sample na data sa talahanayan. Maaari naming gamitin ang mga sumusunod na pahayag na 'insert':

ipasok
sa
mga produkto (product_name,
kategorya,
presyo,
dami,
Petsa ng pagkawalang bisa,
barcode)
mga halaga ( 'Chef Hat 25cm' ,
'bakery' ,
24.67 ,
57 ,
'2023-09-09' ,
2854509564204 );

ipasok
sa
mga produkto (pangalan_produkto,
kategorya,
presyo,
dami,
Petsa ng pagkawalang bisa,
barcode)
mga halaga ( 'Mga Itlog ng Pugo - Naka-kahong' ,
'pantry' ,
17.99 ,
67 ,
'2023-09-29' ,
1708039594250 );

ipasok
sa
mga produkto (pangalan_produkto,
kategorya,
presyo,
dami,
Petsa ng pagkawalang bisa,
barcode)
mga halaga ( 'Kape - Egg Nog Capuccino' ,
'bakery' ,
92.53 ,
10 ,
'2023-09-22' ,
8704051853058 );

ipasok
sa
mga produkto (pangalan_produkto,
kategorya,
presyo,
dami,
Petsa ng pagkawalang bisa,
barcode)
mga halaga ( 'Pear - Prickly' ,
'bakery' ,
65.29 ,
48 ,
'2023-08-23' ,
5174927442238 );

ipasok
sa
mga produkto (pangalan_produkto,
kategorya,
presyo,
dami,
Petsa ng pagkawalang bisa,
barcode)
mga halaga ( 'Pasta - Buhok ng Anghel' ,
'pantry' ,
48.38 ,
59 ,
'2023-08-05' ,
8008123704782 );

ipasok
sa
mga produkto (pangalan_produkto,
kategorya,
presyo,
dami,
Petsa ng pagkawalang bisa,
barcode)
mga halaga ( 'Alak - Prosecco Valdobiaddene' ,
'produce' ,
44.18 ,
3 ,
'2023-03-13' ,
6470981735653 );

Sa dulo, dapat kang magkaroon ng talahanayan tulad ng sumusunod:



SQL Percentile

Tulad ng maaari mong hulaan, ang paraan ng pagkalkula ng percentile ay maaaring mag-iba depende sa database engine. Gayunpaman, ang pinakakaraniwang paraan ay ang paggamit ng PERCENTILE_DISC() at PERCENTILE_CONT() function.

Ang mga function na ito ay bahagi ng Standard SQL specification (2003). Samakatuwid, ito ay tiyak na suportado ng PostgreSQL at Oracle.

PERCENTILE_CONT()

Magsimula tayo sa PERCENTILE_CONT() function. Binibigyang-daan kami ng function na ito na kalkulahin ang mga percentile value bilang isang fraction ng dataset.

Nagbabalik ang function ng mga interpolated na value na maaaring hindi tumpak sa partikular na punto ng data sa iyong dataset.

Ang function syntax ay ang mga sumusunod:

PERCENTILE_CONT(percentile) SA LOOB GRUPO ( ORDER NG column_name) OVER ();

Tinatanggap ng function ang mga sumusunod na parameter:

  • Percentile – Tinutukoy nito ang gustong percentile value (0.0 hanggang 1.0).
  • column_name - Tinutukoy nito ang column kung saan nais naming kalkulahin ang percentile.
  • OVER () - Itinatakda nito ang function ng window upang tukuyin ang buong dataset.

Ang isang halimbawa kung paano gamitin ang function na ito ay ang mga sumusunod:

PUMILI

PERCENTILE_CONT( 0.5 ) SA LOOB NG GRUPO ( ORDER BY presyo) OVER () AS median

MULA SA

mga produkto;

Tandaan: Gumagana lamang ang ibinigay na query sa PostgreSQL dahil hindi sinusuportahan ng MySQL ang paggamit ng WITHIN GROUP.

Kinakalkula nito ang 50 ika percentile ng ibinigay na data.

PERCENTILE_DISC()

Magagamit namin ang PERCENTILE_DISC() function para kalkulahin ang percentile value bilang discrete value nang direkta mula sa dataset.

Ang function ay nagbabalik ng isang halaga na tumutugma sa isang aktwal na punto ng data.

Ang function syntax ay ang mga sumusunod (PostgreSQL):

PERCENTILE_DISC(percentile) SA LOOB GRUPO ( ORDER NG column_name) OVER ();

Ang isang halimbawang output ay ang mga sumusunod:

PUMILI

PERCENTILE_DISC( 0.25 ) SA LOOB NG GRUPO ( ORDER AYON sa presyo) OVER () BILANG percentile_25

MULA SA

mga produkto;

Dapat itong kalkulahin ang 25 ika percentile ng data.

Konklusyon

Sinasaklaw ng tutorial na ito kung paano gamitin ang iba't ibang mga function upang kalkulahin ang mga porsyento sa mga database ng SQL.