SQL PARTITION BY sąlyga

Sql Partition By Salyga



SQL sistemoje PARTITION BY leidžia padalyti arba suskirstyti tam tikros užklausos rezultatų rinkinį į įvairias grupes pagal vieną ar daugiau stulpelių. Gauti skaidiniai gali būti labai naudingi, ypač kai reikia atlikti kiekvieno skaidinio skaičiavimus (atskirai) arba kiekvienoje grupėje taikyti suvestines funkcijas.

Šiame vadove sužinosime apie PARTITION BY sąlygos SQL veikimą ir sužinosime, kaip galime ją panaudoti duomenims skaidyti smulkesniam poaibiui.

Sintaksė:

Pradėkime nuo sakinio PARTITION BY sintaksės. Sintaksė gali priklausyti nuo konteksto, kuriame ją naudojate, bet čia yra bendra sintaksė:







PASIRINKTI 1 stulpelį, 2 stulpelį...

OVER (SKYRIUS PAGAL skirsnio_stulpelį1, skirsnį_stulpelį 2, ...)

FROM lentelės_pavadinimas

Pateikta sintaksė reiškia šiuos elementus:



  1. 1 stulpelis, 2 stulpelis – tai nurodo stulpelius, kuriuos norime įtraukti į rezultatų rinkinį.
  2. PARTITION BY stulpeliai – šis punktas apibrėžia, kaip norime skaidyti arba grupuoti duomenis.

Duomenų pavyzdžiai

Sukurkime pagrindinę lentelę su duomenų pavyzdžiais, kad parodytume, kaip naudoti sąlygą PARTITION BY. Šiame pavyzdyje sukurkime pagrindinę lentelę, kurioje saugoma produkto informacija.



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
);

Į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 );

Įdėti
į
produktai (produkto pavadinimas,
Kategorija,
kaina,
kiekis,
galiojimo laikas,
brūkšninis kodas)
vertės ( „Teksniai – prancūziški mini asorti“ ,
'sandėliukas' ,
36.73 ,
52 ,
„2023-05-29“ ,
5963886298051 );

Įdėti
į
produktai (produkto_pavadinimas,
Kategorija,
kaina,
kiekis,
galiojimo laikas,
brūkšninis kodas)
vertės ( „Apelsinai – konservuoti, mandarinai“ ,
'gaminti' ,
65,0 ,
1 ,
„2023-04-20“ ,
6131761721332 );

Įdėti
į
produktai (produkto_pavadinimas,
Kategorija,
kaina,
kiekis,
galiojimo laikas,
brūkšninis kodas)
vertės ( „Kiauliena – mentė“ ,
'gaminti' ,
55.55 ,
73 ,
„2023-05-01“ ,
9343592107125 );

Įdėti
į
produktai (produkto pavadinimas,
Kategorija,
kaina,
kiekis,
galiojimo laikas,
brūkšninis kodas)
vertės ( „Dc Hikiage Hira Huba“ ,
'gaminti' ,
56.29 ,
53 ,
„2023-04-14“ ,
3354910667072 );

Kai turėsime pavyzdinių duomenų sąranką, galime tęsti ir naudoti sąlygą PARTITION BY.





Pagrindinis naudojimas

Tarkime, kad norime apskaičiuoti bendrą kiekvienos produktų kategorijos prekių skaičių ankstesnėje lentelėje. Naudodami PARTITION BY galime suskirstyti elementus į unikalias kategorijas ir tada nustatyti bendrą kiekvienos kategorijos kiekį.

Pavyzdys yra toks:



PASIRINKTI
produkto pavadinimas,
Kategorija,
kiekis,
SUM(kiekis) OVER (SKYRIUS PAGAL kategoriją) AS total_items
NUO
Produktai;

Atkreipkite dėmesį, kad pateiktame pavyzdyje duomenis skirstome naudodami stulpelį „kategorija“. Tada naudojame SUM() agregavimo funkciją, kad nustatytų bendrą kiekvienos kategorijos elementų skaičių atskirai. Rezultatas rodo bendrą kiekvienos kategorijos elementų skaičių.

Naudojant sąlygą PARTITION BY

Apibendrinant, dažniausiai PARTITION BY sąlyga yra naudojama kartu su lango funkcijomis. Lango funkcija taikoma kiekvienam skyriui atskirai.

Kai kurios įprastos lango funkcijos, naudojamos su PARTITION BY, yra šios:

  • SUM() – apskaičiuokite kiekvienos skaidinio stulpelio sumą.
  • AVG() – apskaičiuokite kiekvieno skaidinio stulpelio vidurkį.
  • COUNT () – suskaičiuokite eilučių skaičių kiekviename skaidinyje.
  • ROW_NUMBER() – priskirkite unikalų eilutės numerį kiekvienai kiekvienos skaidinio eilutei.
  • RANK() – priskirkite reitingą kiekvienai kiekvienos skaidinio eilutei.
  • DENSE_RANK() – priskirkite tankų reitingą kiekvienai kiekvienos skaidinio eilutei.
  • NTILE() – padalinkite duomenis į kvantilius kiekviename skaidinyje.

Viskas!

Išvada

Šiame vadove sužinojome, kaip dirbti su sąlyga PARTITION BY SQL, kad būtų galima suskaidyti duomenis į įvairius segmentus ir pritaikyti konkrečią operaciją kiekvienam gautam skaidiniui atskirai.