SQL Percentile

Sql Percentile



Melyik az a két gyakori szó, amely olyan szorosan összefügg, hogy azt gondolná, hogy ugyanaz? Nekünk, adatbázis-fejlesztőknek ez lenne az SQL adatbázis és a statisztika.

Az egyik gyakori statisztikai számítás, amely még az adatbázis-adminisztráció során is felmerül, a percentilis.

A percentilis egy statisztikai mérőszám, amely lehetővé teszi, hogy egy adatkészletet szegmensek egyenlő részeire osszanak fel. A percentilisek szerepe az, hogy betekintést nyújtsanak az adatok eloszlásába, így megértjük, hogyan oszlanak el az értékek.







Ebben az oktatóanyagban megtanuljuk, hogyan számíthatjuk ki az SQL-ben a percentiliseket, hogy az adatokat különböző szegmensekre oszthassuk.



Minta táblázat

Kezdjük egy alaptáblázat felállításával, amely mintaadatokat tartalmaz demonstrációs célból. Ez segít szemléltetni, hogyan viselkednek a százalékosok kiszámításának különböző módszerei és az eredmény.



Hozzunk létre egy „termékek” nevű táblázatot, amely tartalmazza az élelmiszerbolttal kapcsolatos információkat. A „tábla létrehozása” záradék a következő:





CREATE TABLE termékek (

product_id INT ELSŐDLEGES KULCS AUTO_INCREMENT,

termék_neve VARCHAR( 255 ),

kategória VARCHAR( 255 ),

ár DECIMAL( 10 , 2 ),

mennyiség INT,

expiration_date DATE,

vonalkód BIGINT

);

Miután elkészítettük a táblázatot, folytathatjuk és hozzáadhatjuk a mintaadatokat a táblázathoz. A következő „insert” utasításokat használhatjuk:

betét
-ba
termékek (terméknév,
kategória,
ár,
Mennyiség,
lejárati dátum,
vonalkód)
értékek ( 'Séf kalap 25 cm' ,
'pékség' ,
24.67 ,
57 ,
'2023-09-09' ,
2854509564204 );

betét
-ba
termékek (terméknév,
kategória,
ár,
Mennyiség,
lejárati dátum,
vonalkód)
értékek ( „Fürjtojás – konzerv” ,
'éléskamra' ,
17.99 ,
67 ,
'2023-09-29' ,
1708039594250 );

betét
-ba
termékek (terméknév,
kategória,
ár,
Mennyiség,
lejárati dátum,
vonalkód)
értékek ( 'Coffee - Egg Nog Capuccino' ,
'pékség' ,
92,53 ,
10 ,
'2023-09-22' ,
8704051853058 );

betét
-ba
termékek (terméknév,
kategória,
ár,
Mennyiség,
lejárati dátum,
vonalkód)
értékek ( 'Körte – tüskés' ,
'pékség' ,
65.29 ,
48 ,
'2023-08-23' ,
5174927442238 );

betét
-ba
termékek (terméknév,
kategória,
ár,
Mennyiség,
lejárati dátum,
vonalkód)
értékek ( 'tészta - angyalhaj' ,
'éléskamra' ,
48.38 ,
59 ,
'2023-08-05' ,
8008123704782 );

betét
-ba
termékek (terméknév,
kategória,
ár,
Mennyiség,
lejárati dátum,
vonalkód)
értékek ( 'Bor - Prosecco Valdobiaddene' ,
'termelni' ,
44.18 ,
3 ,
'2023-03-13' ,
6470981735653 );

A végén legyen egy táblázatod a következőképpen:



SQL százalékos

Ahogy sejtheti, a percentilis kiszámításának módja az adatbázis-motortól függően eltérő lehet. A leggyakoribb módszer azonban a PERCENTILE_DISC() és PERCENTILE_CONT() függvények használata.

Ezek a funkciók a Standard SQL specifikáció (2003) részét képezik. Ezért a PostgreSQL és az Oracle támogatnia kell.

PERCENTILE_CONT()

Kezdjük a PERCENTILE_CONT() függvénnyel. Ez a függvény lehetővé teszi, hogy a százalékos értékeket az adatkészlet töredékeként számítsuk ki.

A függvény olyan interpolált értékeket ad vissza, amelyek esetleg nem pontosak az adathalmaz adott adatpontjához.

A függvény szintaxisa a következő:

PERCENTILE_CONT(percentilis) BELÜL CSOPORT ( RENDELÉS BY oszlopnév) OVER ();

A függvény a következő paramétereket fogadja el:

  • Percentilis – Megadja a kívánt százalékos értéket (0,0 és 1,0 között).
  • oszlop_neve – Azt az oszlopot jelöli, amelynek százalékos értékét ki szeretnénk számítani.
  • OVER () – Beállítja az ablak funkciót a teljes adatkészlet megadására.

Egy példa a funkció használatára a következő:

KIVÁLASZTÁS

PERCENTILE_CONT( 0.5 ) BELÜL CSOPORT ( RENDELÉS Ár szerint) FELTE () MINT medián

TÓL TŐL

Termékek;

Megjegyzés: A megadott lekérdezés csak PostgreSQL-ben működik, mivel a MySQL nem támogatja a WITHIN GROUP használatát.

Ez kiszámítja az 50-et th a megadott adatok százalékpontja.

PERCENTILE_DISC()

A PERCENTILE_DISC() függvény segítségével a százalékos értéket diszkrét értékként közvetlenül az adatkészletből számíthatjuk ki.

A függvény egy tényleges adatpontnak megfelelő értéket ad vissza.

A függvény szintaxisa a következő (PostgreSQL):

PERCENTILE_DISC(percentilis) BELÜL CSOPORT ( RENDELÉS BY oszlopnév) OVER ();

Egy példa kimenet a következő:

KIVÁLASZTÁS

PERCENTILE_DISC( 0,25 ) BELÜL CSOPORT ( RENDELÉS Ár szerint) FELTE () AS százalékos_25

TÓL TŐL

Termékek;

Ennek ki kell számítania a 25-öt th az adatok százalékpontja.

Következtetés

Ez az oktatóanyag bemutatja, hogyan lehet a különböző függvényeket használni az SQL-adatbázisok percentiliseinek kiszámításához.