SQL procentilis

Sql Procentilis



Kokie yra du įprasti žodžiai, kurie yra taip glaudžiai susiję, kad, jūsų manymu, yra vienodi? Mums, duomenų bazių kūrėjams, tai būtų SQL duomenų bazė ir statistika.

Vienas iš įprastų statistinių skaičiavimų, atsirandančių net administruojant duomenų bazę, yra procentilė.

Procentilis yra statistinis matas, leidžiantis padalyti duomenų rinkinį į lygias segmentų dalis. Procentilių vaidmuo yra suteikti įžvalgą apie duomenų pasiskirstymą, taip mes suprantame, kaip reikšmės paskirstomos.







Šiame vadove sužinosime, kaip galime apskaičiuoti procentilius SQL, kad padalintume duomenis į įvairius segmentus.



Lentelės pavyzdys

Pradėkime nuo pagrindinės lentelės, kurioje pateikiami pavyzdiniai duomenys demonstravimo tikslais, sudarymo. Tai padeda mums parodyti, kaip veikia įvairūs procentilių skaičiavimo metodai ir gaunama išvestis.



Sukurkime lentelę, vadinamą „produktais“, kurioje yra bakalėjos informacija. Sąlyga „sukurti lentelę“ yra tokia:





CREATE TABLE produktus (

product_id INT PRIMARY KEY AUTO_INCREMENT,

produkto_pavadinimas VARCHAR( 255 ),

kategorija VARCHAR( 255 ),

kaina DECIMAL( 10 , 2 ),

kiekis INT,

expiration_date DATE,

brūkšninis kodas BIGINT

);

Sukūrę lentelę, galime tęsti ir įtraukti pavyzdinius duomenis į lentelę. Galime naudoti šiuos „įterpti“ teiginius:

Įdėti
į
produktai (produkto_pavadinimas,
Kategorija,
kaina,
kiekis,
galiojimo laikas,
brūkšninis kodas)
vertės ( 'Virėjo kepurė 25 cm' ,
'kepykla' ,
24.67 ,
57 ,
„2023-09-09“ ,
2854509564204 );

Įdėti
į
produktai (produkto_pavadinimas,
Kategorija,
kaina,
kiekis,
galiojimo laikas,
brūkšninis kodas)
vertės ( „Putpelių kiaušiniai – konservuoti“ ,
'sandėliukas' ,
17.99 ,
67 ,
„2023-09-29“ ,
1708039594250 );

Įdėti
į
produktai (produkto pavadinimas,
Kategorija,
kaina,
kiekis,
galiojimo laikas,
brūkšninis kodas)
vertės ( „Kava – Kiaušinio Nog Capuccino“ ,
'kepykla' ,
92.53 ,
10 ,
„2023-09-22“ ,
8704051853058 );

Įdėti
į
produktai (produkto pavadinimas,
Kategorija,
kaina,
kiekis,
galiojimo laikas,
brūkšninis kodas)
vertės ( „Kriaušė – dygliuotasis“ ,
'kepykla' ,
65.29 ,
48 ,
„2023-08-23“ ,
5174927442238 );

Įdėti
į
produktai (produkto pavadinimas,
Kategorija,
kaina,
kiekis,
galiojimo laikas,
brūkšninis kodas)
vertės ( „Makaronai – angelo plaukai“ ,
'sandėliukas' ,
48.38 ,
59 ,
„2023-08-05“ ,
8008123704782 );

Įdėti
į
produktai (produkto pavadinimas,
Kategorija,
kaina,
kiekis,
galiojimo laikas,
brūkšninis kodas)
vertės ( „Vynas – Prosecco Valdobiaddene“ ,
'gaminti' ,
44.18 ,
3 ,
„2023-03-13“ ,
6470981735653 );

Pabaigoje turėtumėte turėti tokią lentelę:



SQL procentilis

Kaip galite atspėti, procentilio apskaičiavimo būdas gali skirtis priklausomai nuo duomenų bazės variklio. Tačiau labiausiai paplitęs metodas yra PERCENTILE_DISC() ir PERCENTILE_CONT() funkcijų naudojimas.

Šios funkcijos yra standartinės SQL specifikacijos (2003) dalis. Taigi, jis turi būti palaikomas „PostgreSQL“ ir „Oracle“.

PERCENTILE_CONT ()

Pradėkime nuo funkcijos PERCENTILE_CONT(). Ši funkcija leidžia apskaičiuoti procentilių reikšmes kaip duomenų rinkinio dalį.

Funkcija grąžina interpoliuotas reikšmes, kurios gali būti netikslios konkrečiam duomenų rinkinio duomenų taškui.

Funkcijos sintaksė yra tokia:

PERCENTILE_CONT(procentilis) WITHIN GRUPĖ ( ĮSAKYMAS BY stulpelio_pavadinimas) OVER ();

Funkcija priima šiuos parametrus:

  • Procentilis – nurodo norimą procentilio reikšmę (nuo 0,0 iki 1,0).
  • stulpelio_pavadinimas – žymi stulpelį, kurio procentilį norime apskaičiuoti.
  • OVER () – nustato lango funkciją, kad būtų nurodytas visas duomenų rinkinys.

Šios funkcijos naudojimo pavyzdys yra toks:

PASIRINKTI

PERCENTILE_CONT( 0.5 ) PER GRUPĖ ( ĮSAKYMAS PAGAL kainą) VISI () KAIP mediana

NUO

Produktai;

Pastaba: pateikta užklausa veikia tik „PostgreSQL“, nes „MySQL“ nepalaiko „WITHIN GROUP“ naudojimo.

Taip apskaičiuojama 50 th pateiktų duomenų procentilis.

PERCENTILE_DISC()

Galime naudoti funkciją PERCENTILE_DISC(), norėdami apskaičiuoti procentilio reikšmę kaip atskirą reikšmę tiesiai iš duomenų rinkinio.

Funkcija grąžina reikšmę, atitinkančią faktinį duomenų tašką.

Funkcijos sintaksė yra tokia (PostgreSQL):

PERCENTILE_DISC(procentilis) WITHIN GRUPĖ ( ĮSAKYMAS BY stulpelio_pavadinimas) OVER ();

Išvesties pavyzdys yra toks:

PASIRINKTI

PERCENTILE_DISC( 0.25 ) PER GRUPĖ ( ĮSAKYMAS PAGAL kainą) VISI () AS procentilis_25

NUO

Produktai;

Tai turėtų apskaičiuoti 25 th duomenų procentilė.

Išvada

Šioje pamokoje buvo aprašyta, kaip naudoti įvairias funkcijas procentiliams SQL duomenų bazėse apskaičiuoti.