Fensterfunktionen
Window-Funktionen sind eine Kategorie von SQL-Funktionen, die Berechnungen über eine Menge von Zeilen durchführen, die mit der aktuellen Zeile innerhalb eines definierten Fensters oder einer Partition in Beziehung stehen.
Sie werden verwendet, um Berechnungen und Analysen über eine Teilmenge von Zeilen ohne Reduzierung der Ergebnismenge durchzuführen, im Gegensatz zu Aggregatfunktionen, die typischerweise die Anzahl der von einer Abfrage zurückgegebenen Zeilen verringern.
Erklärung
Angenommen, wir haben die folgende Sales
-Tabelle:
Wenn unser Ziel darin besteht, den Gesamtumsatz für jedes spezifische Produkt zu berechnen und ihn in einer zusätzlichen Spalte innerhalb der Haupttabelle anzuzeigen, anstatt eine neue gruppierte Tabelle zu erzeugen, könnte das Ergebnis wie folgt aussehen:
Aber wie können wir das erreichen?
Die Verwendung von GROUP BY
ist für diese Aufgabe nicht geeignet, da diese Klausel die Anzahl der Zeilen reduziert, indem sie sie nach bestimmten Kriterien gruppiert. Dadurch werden nur die IDs und ihre entsprechenden Summenwerte zurückgegeben.
Deshalb sind Window-Funktionen unerlässlich, um dieses Problem zu lösen.
Implementierung
Das gewünschte Ergebnis kann mit der folgenden Abfrage erzielt werden:
1234567SELECT sales_id, product_id, sales_date, amount, SUM(amount) OVER (PARTITION BY product_id) AS Total_Revenue_Per_Product FROM Sales;
Eine allgemeine Syntax zur Erstellung einer Window-Funktion kann wie folgt beschrieben werden:
SELECT
aggregation_func() OVER (
PARTITION BY partition_column
ORDER BY order_column
)
FROM
table_name;
- SELECT: Zeigt an, dass eine Abfrage beginnt;
- aggregation_func(): Die Aggregatfunktion (z. B.
SUM
,AVG
,COUNT
), die eine Berechnung über eine durch das Fenster definierte Zeilenmenge durchführt; - OVER: Schlüsselwort, das die Window-Funktion einleitet;
- PARTITION BY: Teilt das Ergebnis in Partitionen basierend auf den Werten der angegebenen Spalte(n). Die Window-Funktion arbeitet jeweils separat auf jeder Partition;
- partition_column: Die Spalte, die zur Partitionierung des Ergebnisses verwendet wird.
- ORDER BY: Gibt die Reihenfolge der Zeilen innerhalb jeder Partition an;
- order_column: Die Spalte, die zur Sortierung der Zeilen innerhalb jeder Partition verwendet wird.
- FROM: Gibt die Quelltabelle an, aus der die Daten abgerufen werden;
- table_name: Der Name der Tabelle, aus der die Daten ausgewählt werden.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 4.35
Fensterfunktionen
Swipe um das Menü anzuzeigen
Window-Funktionen sind eine Kategorie von SQL-Funktionen, die Berechnungen über eine Menge von Zeilen durchführen, die mit der aktuellen Zeile innerhalb eines definierten Fensters oder einer Partition in Beziehung stehen.
Sie werden verwendet, um Berechnungen und Analysen über eine Teilmenge von Zeilen ohne Reduzierung der Ergebnismenge durchzuführen, im Gegensatz zu Aggregatfunktionen, die typischerweise die Anzahl der von einer Abfrage zurückgegebenen Zeilen verringern.
Erklärung
Angenommen, wir haben die folgende Sales
-Tabelle:
Wenn unser Ziel darin besteht, den Gesamtumsatz für jedes spezifische Produkt zu berechnen und ihn in einer zusätzlichen Spalte innerhalb der Haupttabelle anzuzeigen, anstatt eine neue gruppierte Tabelle zu erzeugen, könnte das Ergebnis wie folgt aussehen:
Aber wie können wir das erreichen?
Die Verwendung von GROUP BY
ist für diese Aufgabe nicht geeignet, da diese Klausel die Anzahl der Zeilen reduziert, indem sie sie nach bestimmten Kriterien gruppiert. Dadurch werden nur die IDs und ihre entsprechenden Summenwerte zurückgegeben.
Deshalb sind Window-Funktionen unerlässlich, um dieses Problem zu lösen.
Implementierung
Das gewünschte Ergebnis kann mit der folgenden Abfrage erzielt werden:
1234567SELECT sales_id, product_id, sales_date, amount, SUM(amount) OVER (PARTITION BY product_id) AS Total_Revenue_Per_Product FROM Sales;
Eine allgemeine Syntax zur Erstellung einer Window-Funktion kann wie folgt beschrieben werden:
SELECT
aggregation_func() OVER (
PARTITION BY partition_column
ORDER BY order_column
)
FROM
table_name;
- SELECT: Zeigt an, dass eine Abfrage beginnt;
- aggregation_func(): Die Aggregatfunktion (z. B.
SUM
,AVG
,COUNT
), die eine Berechnung über eine durch das Fenster definierte Zeilenmenge durchführt; - OVER: Schlüsselwort, das die Window-Funktion einleitet;
- PARTITION BY: Teilt das Ergebnis in Partitionen basierend auf den Werten der angegebenen Spalte(n). Die Window-Funktion arbeitet jeweils separat auf jeder Partition;
- partition_column: Die Spalte, die zur Partitionierung des Ergebnisses verwendet wird.
- ORDER BY: Gibt die Reihenfolge der Zeilen innerhalb jeder Partition an;
- order_column: Die Spalte, die zur Sortierung der Zeilen innerhalb jeder Partition verwendet wird.
- FROM: Gibt die Quelltabelle an, aus der die Daten abgerufen werden;
- table_name: Der Name der Tabelle, aus der die Daten ausgewählt werden.
Danke für Ihr Feedback!