SQL-PARTITION BY-klausul

Sql Partition By Klausul



I SQL tillåter PARTITION BY-satsen oss att dela upp eller partitionera resultatuppsättningen för en given fråga i olika grupper baserat på en eller flera kolumner. De resulterande partitionerna kan vara ganska användbara, särskilt när du behöver utföra beräkningarna för varje partition (individuellt) eller tillämpa de aggregerade funktionerna inom varje grupp.

I den här handledningen kommer vi att lära oss om hur PARTITION BY-satsen fungerar i SQL och upptäcka hur vi kan använda den för att partitionera data för en mer detaljerad delmängd.

Syntax:

Låt oss börja med syntaxen för PARTITION BY-satsen. Syntaxen kan bero på i vilket sammanhang du använder den men här är den allmänna syntaxen:







VÄLJ kolumn1, kolumn2, ...

ÖVER (PARTITION BY partition_column1, partition_column2, ...)

FRÅN tabellnamn

Den givna syntaxen representerar följande element:



  1. kolumn1, kolumn2 – Detta hänvisar till de kolumner som vi vill inkludera i resultatuppsättningen.
  2. PARTITION BY kolumner – Denna sats definierar hur vi vill partitionera eller gruppera data.

Stickprov

Låt oss skapa en grundläggande tabell med exempeldata för att visa hur man använder PARTITION BY-satsen. För det här exemplet, låt oss skapa en grundläggande tabell som lagrar produktinformationen.



CREATE TABLE-produkter (
product_id INT PRIMARY KEY AUTO_INCREMENT,
produktnamn VARCHAR( 255 ),
kategori VARCHAR( 255 ),
pris DECIMAL( 10 , 2 ),
kvantitet INT,
expiration_date DATE,
streckkod BIGINT
);

Föra in
in i
produkter (produktnamn,
kategori,
pris,
kvantitet,
utgångsdatum,
streckkod)
värden ( 'Kockmössa 25cm' ,
'bageri' ,
24,67 ,
57 ,
'2023-09-09' ,
2854509564204 );

Föra in
in i
produkter (produktnamn,
kategori,
pris,
kvantitet,
utgångsdatum,
streckkod)
värden ( 'Vaktelägg - på burk' ,
'skafferi' ,
17,99 ,
67 ,
'2023-09-29' ,
1708039594250 );

Föra in
in i
produkter (produktnamn,
kategori,
pris,
kvantitet,
utgångsdatum,
streckkod)
värden ( 'Kaffe - Egg Nog Capuccino' ,
'bageri' ,
92,53 ,
10 ,
'2023-09-22' ,
8704051853058 );

Föra in
in i
produkter (produktnamn,
kategori,
pris,
kvantitet,
utgångsdatum,
streckkod)
värden ( 'Pear - Prickly' ,
'bageri' ,
65,29 ,
48 ,
'2023-08-23' ,
5174927442238 );

Föra in
in i
produkter (produktnamn,
kategori,
pris,
kvantitet,
utgångsdatum,
streckkod)
värden ( 'Pasta - Angel Hair' ,
'skafferi' ,
48,38 ,
59 ,
'2023-08-05' ,
8008123704782 );

Föra in
in i
produkter (produktnamn,
kategori,
pris,
kvantitet,
utgångsdatum,
streckkod)
värden ( 'Vin - Prosecco Valdobiaddene' ,
'producera' ,
44,18 ,
3 ,
'2023-03-13' ,
6470981735653 );

Föra in
in i
produkter (produktnamn,
kategori,
pris,
kvantitet,
utgångsdatum,
streckkod)
värden ( 'Konditori - franska mini-assorterade' ,
'skafferi' ,
36,73 ,
52 ,
'2023-05-29' ,
5963886298051 );

Föra in
in i
produkter (produktnamn,
kategori,
pris,
kvantitet,
utgångsdatum,
streckkod)
värden ( 'Apelsin - konserverad, mandarin' ,
'producera' ,
65,0 ,
1 ,
'2023-04-20' ,
6131761721332 );

Föra in
in i
produkter (produktnamn,
kategori,
pris,
kvantitet,
utgångsdatum,
streckkod)
värden ( 'Fläsk - Shoulder' ,
'producera' ,
55,55 ,
73 ,
'2023-05-01' ,
9343592107125 );

Föra in
in i
produkter (produktnamn,
kategori,
pris,
kvantitet,
utgångsdatum,
streckkod)
värden ( 'Dc Hikiage Hira Huba' ,
'producera' ,
56,29 ,
53 ,
'2023-04-14' ,
3354910667072 );

När vi har exempeldatainställningen kan vi fortsätta och använda PARTITION BY-satsen.





Grundläggande användning

Anta att vi vill beräkna det totala antalet varor för varje produktkategori i föregående tabell. Vi kan använda PARTITION BY för att dela in föremålen i unika kategorier och sedan bestämma summan av kvantiteten i varje kategori.

Ett exempel är följande:



VÄLJ
produktnamn,
kategori,
kvantitet,
SUM(kvantitet) ÖVER (PARTITION EFTER kategori) SOM totala_artiklar
FRÅN
Produkter;

Lägg märke till att i det givna exemplet partitionerar vi data med hjälp av kolumnen 'kategori'. Vi använder sedan aggregatfunktionen SUM() för att bestämma det totala antalet objekt i varje kategori separat. Resultatet visar det totala antalet föremål i varje kategori.

Använda PARTITION BY-klausulen

För att sammanfatta, är det vanligaste användningsfallet för PARTITION BY-satsen i kombination med fönsterfunktionerna. Fönsterfunktionen tillämpas på varje partition separat.

Några av de vanliga fönsterfunktionerna att använda med PARTITION BY inkluderar följande:

  • SUM() – Beräkna summan av en kolumn inom varje partition.
  • AVG() – Beräkna medelvärdet av en kolumn inom varje partition.
  • COUNT() – Räkna antalet rader inom varje partition.
  • ROW_NUMBER() – Tilldela ett unikt radnummer till varje rad inom varje partition.
  • RANK() – Tilldela en rangordning till varje rad inom varje partition.
  • DENSE_RANK() – Tilldela en tät rangordning till varje rad inom varje partition.
  • NTILE() – Dela upp data i kvantiler inom varje partition.

Det är allt!

Slutsats

I den här handledningen lärde vi oss hur man arbetar med PARTITION BY-satsen i SQL för att partitionera data i olika segment och sedan tillämpa en specifik operation på var och en av de resulterande partitionerna separat.