SQL ROZDELENIE PODĽA klauzuly

Sql Rozdelenie Podla Klauzuly



V SQL nám klauzula PARTITION BY umožňuje rozdeliť alebo rozdeliť množinu výsledkov daného dotazu do rôznych skupín na základe jedného alebo viacerých stĺpcov. Výsledné oddiely môžu byť celkom užitočné najmä vtedy, keď potrebujete vykonať výpočty pre každý oddiel (individuálne) alebo použiť agregačné funkcie v rámci každej skupiny.

V tomto návode sa dozvieme o fungovaní klauzuly PARTITION BY v SQL a zistíme, ako ju môžeme použiť na rozdelenie údajov do podrobnejšej podmnožiny.

Syntax:

Začnime syntaxou klauzuly PARTITION BY. Syntax môže závisieť od kontextu, v ktorom ju používate, ale tu je všeobecná syntax:







VYBERTE stĺpec1, stĺpec2, ...

OVER (PARTITION BY partition_stĺpec1, partition_stĺpec2, ...)

FROM table_name

Daná syntax predstavuje nasledujúce prvky:



  1. stĺpec1, stĺpec2 – týka sa stĺpcov, ktoré chceme zahrnúť do sady výsledkov.
  2. PARTITION BY columns – Táto klauzula definuje, ako chceme rozdeliť alebo zoskupiť údaje.

Vzorové údaje

Vytvorme základnú tabuľku so vzorovými údajmi, aby sme ukázali, ako používať klauzulu PARTITION BY. Pre tento príklad vytvorte základnú tabuľku, v ktorej sú uložené informácie o produkte.



Produkty CREATE TABLE (
product_id INT PRIMARY KEY AUTO_INCREMENT,
názov_produktu VARCHAR( 255 ),
kategória VARCHAR( 255 ),
cena DECIMAL( 10 , 2 ),
množstvo INT,
expiration_date DATE,
čiarový kód BIGINT
);

vložiť
do
produkty (názov_produktu,
kategória,
cena,
množstvo,
dátum spotreby,
čiarový kód)
hodnoty ( Kuchársky klobúk 25 cm ,
'pekáreň' ,
24,67 ,
57 ,
'2023-09-09' ,
2854509564204 );

vložiť
do
produkty (názov_produktu,
kategória,
cena,
množstvo,
dátum spotreby,
čiarový kód)
hodnoty ( „Prepeličie vajcia – konzervované“ ,
'špajza' ,
17,99 ,
67 ,
'2023-09-29' ,
1708039594250 );

vložiť
do
produkty (názov_produktu,
kategória,
cena,
množstvo,
dátum spotreby,
čiarový kód)
hodnoty ( „Káva – capuccino s vaječným likérom“ ,
'pekáreň' ,
92,53 ,
10 ,
'2023-09-22' ,
8704051853058 );

vložiť
do
produkty (názov_produktu,
kategória,
cena,
množstvo,
dátum spotreby,
čiarový kód)
hodnoty ( „Hruška – ostnatá“ ,
'pekáreň' ,
65,29 ,
48 ,
'2023-08-23' ,
5174927442238 );

vložiť
do
produkty (názov_produktu,
kategória,
cena,
množstvo,
dátum spotreby,
čiarový kód)
hodnoty ( „Cestoviny – anjelské vlasy“ ,
'špajza' ,
48,38 ,
59 ,
'2023-08-05' ,
8008123704782 );

vložiť
do
produkty (názov_produktu,
kategória,
cena,
množstvo,
dátum spotreby,
čiarový kód)
hodnoty ( „Víno – Prosecco Valdobiaddene“ ,
'produkovať' ,
44,18 ,
3 ,
'2023-03-13' ,
6470981735653 );

vložiť
do
produkty (názov_produktu,
kategória,
cena,
množstvo,
dátum spotreby,
čiarový kód)
hodnoty ( „Pečivo – francúzske mini rôzne“ ,
'špajza' ,
36,73 ,
52 ,
'2023-05-29' ,
5963886298051 );

vložiť
do
produkty (názov_produktu,
kategória,
cena,
množstvo,
dátum spotreby,
čiarový kód)
hodnoty ( „Pomaranč – konzerva, mandarínka“ ,
'produkovať' ,
65,0 ,
1 ,
'2023-04-20' ,
6131761721332 );

vložiť
do
produkty (názov_produktu,
kategória,
cena,
množstvo,
dátum spotreby,
čiarový kód)
hodnoty ( 'Bravčová pliecko' ,
'produkovať' ,
55,55 ,
73 ,
'2023-05-01' ,
9343592107125 );

vložiť
do
produkty (názov_produktu,
kategória,
cena,
množstvo,
dátum spotreby,
čiarový kód)
hodnoty ( „Dc Hikiage Hira Huba“ ,
'produkovať' ,
56,29 ,
53 ,
'2023-04-14' ,
3354910667072 );

Keď máme nastavenie vzorových údajov, môžeme pokračovať a použiť klauzulu PARTITION BY.





Základné použitie

Predpokladajme, že chceme vypočítať celkový počet položiek pre každú kategóriu produktov v predchádzajúcej tabuľke. Môžeme použiť PARTITION BY na rozdelenie položiek do jedinečných kategórií a potom určiť celkové množstvo v každej kategórii.

Príklad je nasledujúci:



VYBRAŤ
Meno Produktu,
kategória,
množstvo,
SUM(množstvo) NAD (PARTITION BY category) AS total_items
OD
Produkty;

Všimnite si, že v uvedenom príklade rozdeľujeme údaje pomocou stĺpca „kategória“. Potom použijeme súhrnnú funkciu SUM() na určenie celkového počtu položiek v každej kategórii samostatne. Výsledok zobrazuje celkový počet položiek v každej kategórii.

Použitie klauzuly PARTITION BY

Aby sme to zhrnuli, najbežnejším prípadom použitia klauzuly PARTITION BY je spojenie s funkciami okna. Funkcia okna sa aplikuje na každý oddiel samostatne.

Niektoré z bežných funkcií okna na použitie s PARTITION BY zahŕňajú nasledujúce:

  • SUM() – Výpočet súčtu stĺpcov v rámci každého oddielu.
  • AVG() – Vypočíta priemer stĺpca v rámci každého oddielu.
  • COUNT() – Spočíta počet riadkov v rámci každého oddielu.
  • ROW_NUMBER() – Priraďte jedinečné číslo riadku každému riadku v rámci každého oddielu.
  • RANK() – Priraďte hodnotenie každému riadku v rámci každého oddielu.
  • DENSE_RANK() – Priraďte husté hodnotenie každému riadku v rámci každého oddielu.
  • NTILE() – Rozdelenie údajov na kvantily v rámci každého oddielu.

To je všetko!

Záver

V tomto návode sme sa naučili, ako pracovať s klauzulou PARTITION BY v SQL, aby sme rozdelili údaje na rôzne segmenty a potom aplikovali špecifickú operáciu na každý z výsledných oddielov samostatne.