SQL Percentil

Sql Percentil



Koje su dvije uobičajene riječi koje su tako blisko povezane da biste pomislili da su iste? Za nas programere baze podataka, to bi bila SQL baza podataka i statistika.

Jedan od uobičajenih statističkih izračuna koji se pojavljuje čak iu administraciji baze podataka je percentil.

Percentil je statistička mjera koja nam omogućuje da skup podataka podijelimo na jednake dijelove segmenata. Uloga percentila je pružiti uvid u distribuciju podataka, što je način na koji razumijemo kako su vrijednosti raspoređene.







U ovom vodiču naučit ćemo kako možemo izračunati percentile u SQL-u da podijelimo podatke u različite segmente.



Tablica uzorka

Počnimo s postavljanjem osnovne tablice koja sadrži ogledne podatke u svrhu demonstracije. To nam pomaže da ilustriramo kako se ponašaju različite metode izračunavanja percentila i rezultirajući rezultat.



Kreirajmo tablicu pod nazivom 'proizvodi' koja sadrži podatke o namirnicama. Klauzula 'kreiraj tablicu' je sljedeća:





CREATE TABLE proizvodi (

product_id INT PRIMARY KEY AUTO_INCREMENT,

naziv_proizvoda VARCHAR( 255 ),

kategorija VARCHAR( 255 ),

cijena DECIMAL( 10 , 2 ),

količina INT,

datum_istjecanja DATE,

crtični kod BIGINT

);

Nakon što smo izradili tablicu, možemo nastaviti i dodati ogledne podatke u tablicu. Možemo koristiti sljedeće 'umetnuti' izjave:

umetnuti
u
proizvodi (ime_proizvoda,
kategorija,
cijena,
količina,
Datum isteka roka trajanja,
crtični kod)
vrijednosti ( 'Kuharska kapa 25 cm' ,
'pekara' ,
24.67 ,
57 ,
'2023-09-09' ,
2854509564204 );

umetnuti
u
proizvodi (ime_proizvoda,
kategorija,
cijena,
količina,
Datum isteka roka trajanja,
crtični kod)
vrijednosti ( 'Prepeličja jaja - konzervirana' ,
'ostava' ,
17.99 ,
67 ,
'2023-09-29' ,
1708039594250 );

umetnuti
u
proizvodi (ime_proizvoda,
kategorija,
cijena,
količina,
Datum isteka roka trajanja,
crtični kod)
vrijednosti ( 'Kava - Egg Nog Capuccino' ,
'pekara' ,
92.53 ,
10 ,
'22.9.2023' ,
8704051853058 );

umetnuti
u
proizvodi (ime_proizvoda,
kategorija,
cijena,
količina,
Datum isteka roka trajanja,
crtični kod)
vrijednosti ( 'Kruška - bodljikava' ,
'pekara' ,
65.29 ,
48 ,
'2023-08-23' ,
5174927442238 );

umetnuti
u
proizvodi (ime_proizvoda,
kategorija,
cijena,
količina,
Datum isteka roka trajanja,
crtični kod)
vrijednosti ( 'Tjestenina - anđeoska kosa' ,
'ostava' ,
48.38 ,
59 ,
'2023-08-05' ,
8008123704782 );

umetnuti
u
proizvodi (ime_proizvoda,
kategorija,
cijena,
količina,
Datum isteka roka trajanja,
crtični kod)
vrijednosti ( 'Vino - Prosecco Valdobiaddene' ,
'proizvesti' ,
44.18 ,
3 ,
'2023-03-13' ,
6470981735653 );

Na kraju biste trebali imati sljedeću tablicu:



SQL Percentil

Kao što možete pretpostaviti, način izračunavanja percentila može se razlikovati ovisno o pogonu baze podataka. Međutim, najčešća metoda je korištenje funkcija PERCENTILE_DISC() i PERCENTILE_CONT().

Ove su funkcije dio standardne SQL specifikacije (2003). Stoga ga PostgreSQL i Oracle moraju podržati.

PERCENTILE_CONT()

Počnimo s funkcijom PERCENTILE_CONT(). Ova nam funkcija omogućuje izračunavanje postotnih vrijednosti kao razlomka skupa podataka.

Funkcija vraća interpolirane vrijednosti koje možda nisu precizne za određenu podatkovnu točku u vašem skupu podataka.

Sintaksa funkcije je sljedeća:

PERCENTILE_CONT(percentil) UNUTAR SKUPINA ( NARUDŽBA PO nazivu stupca) OVER ();

Funkcija prihvaća sljedeće parametre:

  • Percentil – Određuje željenu vrijednost percentila (0,0 do 1,0).
  • column_name – Označava stupac za koji želimo izračunati percentil.
  • OVER () – Postavlja funkciju prozora za određivanje cijelog skupa podataka.

Primjer korištenja ove funkcije je sljedeći:

IZABERI

PERCENTILE_CONT( 0,5 ) UNUTAR SKUPINA ( NARUDŽBA PO cijeni) PREKO () KAO medijan

IZ

proizvodi;

Napomena: Zadani upit radi samo u PostgreSQL-u jer MySQL ne podržava korištenje WITHIN GROUP.

Ovo izračunava 50 th percentil dostavljenih podataka.

PERCENTILE_DISC()

Možemo upotrijebiti funkciju PERCENTILE_DISC() za izračunavanje postotne vrijednosti kao diskretne vrijednosti izravno iz skupa podataka.

Funkcija vraća vrijednost koja odgovara stvarnoj podatkovnoj točki.

Sintaksa funkcije je sljedeća (PostgreSQL):

PERCENTILE_DISC(percentil) UNUTAR SKUPINA ( NARUDŽBA PO nazivu stupca) OVER ();

Primjer izlaza je sljedeći:

IZABERI

PERCENTILE_DISC( 0,25 ) UNUTAR SKUPINA ( NARUDŽBA PO cijeni) PREKO () KAO percentil_25

IZ

proizvodi;

Ovo bi trebalo izračunati 25 th percentil podataka.

Zaključak

Ovaj vodič pokriva kako koristiti različite funkcije za izračunavanje percentila u SQL bazama podataka.