Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Window-Funktionen | Einige Zusätzliche Themen
SQL-Optimierung und Abfragefunktionen

Window-Funktionen

Swipe um das Menü anzuzeigen

Window-Funktionen sind eine Kategorie von SQL-Funktionen, die Berechnungen über eine Menge von Zeilen durchführen, die sich auf die aktuelle Zeile innerhalb eines definierten Fensters oder einer Partition beziehen.
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:

12
SELECT * FROM sales

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 die 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:

1234567
SELECT sales_id, product_id, sales_date, amount, SUM(amount) OVER (PARTITION BY product_id) AS Total_Revenue_Per_Product FROM Sales;
Abfragebeschreibung
expand arrow
  • Funktionsname: SUM
  • Beschreibung: Berechnet die Summe einer angegebenen Spalte innerhalb eines definierten Fensters.
  • Argumente:
    • Amount: Die zu summierende Spalte.
  • Window-Funktion:
    • OVER: Gibt das Fenster an, über das die Aggregation durchgeführt wird.
    • PARTITION BY Product_ID: Unterteilt das Ergebnis in Partitionen basierend auf den Werten der Spalte Product_ID. Die Summe wird für jede Partition separat berechnet.
  • Alias: Total_Revenue_Per_Product: Der Name, der der berechneten Summe für jede Partition zugewiesen wird.
  • Verwendung: Diese Funktion wird verwendet, um den Gesamtumsatz pro Produkt zu berechnen, indem die Beträge für jede Produkt-ID aufsummiert werden.
  • Ergebnis: Das Ergebnis enthält die Spalten Sales_ID, Product_ID, Sales_Date, Amount und Total_Revenue_Per_Product aus der Tabelle sales, wobei Total_Revenue_Per_Product den Gesamtumsatz für jede Produkt-ID darstellt.
  • Sortierung: Das Ergebnis wird nach Sales_Date sortiert.

Eine allgemeine Syntax zur Erstellung einer Window Function 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 Function einleitet;
  • PARTITION BY: teilt das Ergebnis in Partitionen basierend auf den Werten der angegebenen Spalte(n) auf. Die Window Function arbeitet jeweils separat auf jeder Partition;
    • partition_column: die Spalte, die zur Partitionierung des Ergebnisses verwendet wird.
  • ORDER BY: legt die Reihenfolge der Zeilen innerhalb jeder Partition fest;
    • 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.
question mark

Welche Klausel wird verwendet, um die Partitionierung einer Window Function zu definieren?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 2

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Abschnitt 3. Kapitel 2
some-alt