SQL PARTITION BY-Klausel

Sql Partition By Klausel



In SQL ermöglicht uns die PARTITION BY-Klausel, die Ergebnismenge einer bestimmten Abfrage basierend auf einer oder mehreren Spalten in verschiedene Gruppen aufzuteilen oder zu partitionieren. Die resultierenden Partitionen können sehr nützlich sein, insbesondere wenn Sie die Berechnungen für jede Partition (einzeln) durchführen oder die Aggregatfunktionen innerhalb jeder Gruppe anwenden müssen.

In diesem Tutorial lernen wir die Funktionsweise der PARTITION BY-Klausel in SQL kennen und erfahren, wie wir sie verwenden können, um die Daten für eine detailliertere Teilmenge zu partitionieren.

Syntax:

Beginnen wir mit der Syntax der PARTITION BY-Klausel. Die Syntax kann vom Kontext abhängen, in dem Sie sie verwenden, aber hier ist die allgemeine Syntax:







SELECT Spalte1, Spalte2, ...

OVER (PARTITION BY partition_column1, partition_column2, ...)

VON Tabellenname

Die angegebene Syntax stellt die folgenden Elemente dar:



  1. Spalte1, Spalte2 – Dies bezieht sich auf die Spalten, die wir in die Ergebnismenge aufnehmen möchten.
  2. PARTITION BY-Spalten – Diese Klausel definiert, wie wir die Daten partitionieren oder gruppieren möchten.

Beispieldaten

Lassen Sie uns eine Basistabelle mit Beispieldaten erstellen, um zu demonstrieren, wie die PARTITION BY-Klausel verwendet wird. Für dieses Beispiel erstellen wir eine einfache Tabelle, in der die Produktinformationen gespeichert sind.



CREATE TABLE-Produkte (
product_id INT PRIMARY KEY AUTO_INCREMENT,
Produktname VARCHAR( 255 ),
Kategorie VARCHAR( 255 ),
Preis DEZIMAL( 10 , 2 ),
Menge INT,
expiration_date DATUM,
Barcode BIGINT
);

einfügen
hinein
Produkte (Produktname,
Kategorie,
Preis,
Menge,
Verfallsdatum,
Barcode)
Werte ( 'Kochmütze 25cm' ,
'Bäckerei' ,
24.67 ,
57 ,
'09.09.2023' ,
2854509564204 );

einfügen
hinein
Produkte (Produktname,
Kategorie,
Preis,
Menge,
Verfallsdatum,
Barcode)
Werte ( „Wachteleier – Konserviert“ ,
'Speisekammer' ,
17,99 ,
67 ,
'29.09.2023' ,
1708039594250 );

einfügen
hinein
Produkte (Produktname,
Kategorie,
Preis,
Menge,
Verfallsdatum,
Barcode)
Werte ( „Kaffee – Eierlikör-Cappuccino“ ,
'Bäckerei' ,
92,53 ,
10 ,
'22.09.2023' ,
8704051853058 );

einfügen
hinein
Produkte (Produktname,
Kategorie,
Preis,
Menge,
Verfallsdatum,
Barcode)
Werte ( 'Birne - Stachelig' ,
'Bäckerei' ,
65,29 ,
48 ,
'2023-08-23' ,
5174927442238 );

einfügen
hinein
Produkte (Produktname,
Kategorie,
Preis,
Menge,
Verfallsdatum,
Barcode)
Werte ( „Pasta – Engelshaar“ ,
'Speisekammer' ,
48,38 ,
59 ,
'05.08.2023' ,
8008123704782 );

einfügen
hinein
Produkte (Produktname,
Kategorie,
Preis,
Menge,
Verfallsdatum,
Barcode)
Werte ( „Wein – Prosecco Valdobiaddene“ ,
'produzieren' ,
44.18 ,
3 ,
'2023-03-13' ,
6470981735653 );

einfügen
hinein
Produkte (Produktname,
Kategorie,
Preis,
Menge,
Verfallsdatum,
Barcode)
Werte ( 'Gebäck - Französisch Mini sortiert' ,
'Speisekammer' ,
36,73 ,
52 ,
'29.05.2023' ,
5963886298051 );

einfügen
hinein
Produkte (Produktname,
Kategorie,
Preis,
Menge,
Verfallsdatum,
Barcode)
Werte ( „Orange – Konserviert, Mandarine“ ,
'produzieren' ,
65,0 ,
1 ,
„20.04.2023“ ,
6131761721332 );

einfügen
hinein
Produkte (Produktname,
Kategorie,
Preis,
Menge,
Verfallsdatum,
Barcode)
Werte ( 'Schweineschulter' ,
'produzieren' ,
55,55 ,
73 ,
'01.05.2023' ,
9343592107125 );

einfügen
hinein
Produkte (Produktname,
Kategorie,
Preis,
Menge,
Verfallsdatum,
Barcode)
Werte ( „Dc Hikiage Hira Huba“ ,
'produzieren' ,
56,29 ,
53 ,
'2023-04-14' ,
3354910667072 );

Sobald wir die Beispieldaten eingerichtet haben, können wir fortfahren und die PARTITION BY-Klausel verwenden.





Grundlegende Verwendung

Angenommen, wir möchten die Gesamtzahl der Artikel für jede Produktkategorie in der vorherigen Tabelle berechnen. Mit PARTITION BY können wir die Artikel in eindeutige Kategorien unterteilen und dann die Gesamtmenge in jeder Kategorie ermitteln.

Ein Beispiel ist wie folgt:



WÄHLEN
Produktname,
Kategorie,
Menge,
SUM(menge) OVER (PARTITION NACH Kategorie) AS total_items
AUS
Produkte;

Beachten Sie, dass wir im gegebenen Beispiel die Daten mithilfe der Spalte „Kategorie“ partitionieren. Anschließend verwenden wir die Aggregatfunktion SUM(), um die Gesamtzahl der Artikel in jeder Kategorie separat zu ermitteln. Das Ergebnis zeigt die Gesamtzahl der Artikel in jeder Kategorie.

Verwendung der PARTITION BY-Klausel

Zusammenfassend lässt sich sagen, dass die PARTITION BY-Klausel am häufigsten in Verbindung mit den Fensterfunktionen verwendet wird. Die Fensterfunktion wird auf jede Partition separat angewendet.

Zu den allgemeinen Fensterfunktionen, die mit PARTITION BY verwendet werden können, gehören die folgenden:

  • SUM() – Berechnen Sie die Summe einer Spalte innerhalb jeder Partition.
  • AVG() – Berechnen Sie den Durchschnitt einer Spalte innerhalb jeder Partition.
  • COUNT() – Zählt die Anzahl der Zeilen innerhalb jeder Partition.
  • ROW_NUMBER() – Weisen Sie jeder Zeile innerhalb jeder Partition eine eindeutige Zeilennummer zu.
  • RANK() – Weisen Sie jeder Zeile innerhalb jeder Partition einen Rang zu.
  • DENSE_RANK() – Weisen Sie jeder Zeile innerhalb jeder Partition einen dichten Rang zu.
  • NTILE() – Teilen Sie die Daten innerhalb jeder Partition in Quantile auf.

Das ist es!

Abschluss

In diesem Tutorial haben wir gelernt, wie man mit der PARTITION BY-Klausel in SQL arbeitet, um die Daten in verschiedene Segmente zu partitionieren und dann auf jede der resultierenden Partitionen separat eine bestimmte Operation anzuwenden.