SQL OVER-Klausel

Sql Over Klausel



Eine der fortschrittlichsten Funktionen von SQL ist die OVER-Klausel. Mit dieser Funktion können wir Berechnungen durchführen und die SQL-Fensterfunktionen auf eine bestimmte Teilmenge von Zeilen innerhalb einer bestimmten Ergebnismenge anwenden.

Dies ist besonders nützlich, wenn Sie die Aggregationen oder Rangfolgen für Gruppen von Zeilen berechnen müssen, ohne tatsächlich den gesamten Ergebnissatz zu reduzieren.

Nehmen Sie an diesem Tutorial teil und erfahren Sie alles, was Sie wissen müssen, um mit der OVER-Klausel zu arbeiten.







Anforderungen:

Bevor wir uns mit der Funktionalität und Funktionsweise der OVER-Klausel befassen, stellen Sie sicher, dass Sie mit den Grundlagen von SQL vertraut sind. Wir gehen außerdem davon aus, dass Sie Zugriff auf eine Datenbank haben, mit der Sie Ihr Wissen testen können.



In unserem Fall verwenden wir die MySQL-Datenbank mit der Sakila-Beispieldatenbank. Stellen Sie einfach sicher, dass Sie über ausreichende Berechtigungen verfügen und dass Ihre Datenbank-Engine die Fensterfunktionen unterstützt.



Syntax:

Wie bereits erwähnt, verwenden wir in den meisten Fällen hauptsächlich die OVER-Klausel in Verbindung mit den Fensterfunktionen.





Daher können wir die Syntax der Klausel wie folgt ausdrücken:

(Ausdruck) OVER (

[PARTITION BY partition_expression, ...]

[ORDER BY sort_expression [ASC | BESCHR.], ...]

[Frame_Spezifikation]

)

In der angegebenen Syntax können wir jede Komponente wie folgt aufschlüsseln:



  1. – Es bezieht sich auf die Fensterfunktion, die wir auf ein bestimmtes Zeilenfenster anwenden möchten, wie z. B. SUM(), AVG(), ROW_NUMBER(), RANK usw.
  2. Ausdruck – Dies gibt eine Spalte oder einen Ausdruck an, auf die bzw. den die Fensterfunktion angewendet wird.
  3. PARTITION BY – Dies ist eine optionale Klausel, die die Ergebnismenge in Partitionen unterteilt, wobei jede Partition wie eine separate Einheit ist, auf die die Funktion angewendet wird. Zeilen innerhalb derselben Partition haben dieselben Werte in den angegebenen Spalten.
  4. ORDER BY – Dies gibt die Reihenfolge an, in der die Zeilen in jeder Partition verarbeitet werden.
  5. Frame_Spezifikation – Dies ist eine optionale Klausel, die den Rahmen von Zeilen innerhalb der Partition definiert. Zu den gängigen Frame-Spezifikationen gehören ROWS BETWEEN AND oder RANGE BETWEEN AND

Lassen Sie uns nun einige praktische Beispiele für die Verwendung untersuchen.

Beispiel:

Lassen Sie uns anhand der Sakila-Beispieldatenbank demonstrieren, wie die Klausel verwendet wird. Stellen Sie sich ein Beispiel vor, bei dem wir den Gesamtumsatz für jede Filmkategorie ermitteln müssen.

Wir können die Summenfensterfunktion mit der OVER-Klausel und einer Reihe von Join-Anweisungen verwenden, wie im folgenden Beispiel gezeigt:

WÄHLEN
Kategoriename AS Kategoriename,
film.title AS film_title,
film.rental_rate,
SUM(zahlung.betrag) OVER (PARTITION NACH kategorie.name) AS total_revenue
AUS
Film
VERBINDEN
film_category EIN
film.film_id = film_category.film_id
VERBINDEN
Kategorie EIN
film_category.category_id = Kategorie.category_id
VERBINDEN
Inventar EIN
film.film_id = inventory.film_id
VERBINDEN
Vermietung ON
inventory.inventory_id = Rental.inventory_id
VERBINDEN
Zahlung EIN
Rental.rental_id = payment.rental_id
SORTIEREN NACH
Kategoriename,
Filmtitel;

In der angegebenen Abfrage wählen wir zunächst den Filmtitel und den Leihpreis aus und verwenden den Summenausdruck (Zahlung.Betrag über Partition nach Kategorie.Name), um die Summe jeder Kategoriepartition nach Kategorienamen zu bestimmen.

Wir müssen die PARTITION BY-Klausel verwenden, um sicherzustellen, dass die Berechnung der Summe bei jeder eindeutigen Kategorie neu beginnt.

Die resultierende Ausgabe lautet wie folgt:

Hier hast du es!

Abschluss

In diesem Beispiel haben wir die Grundlagen der Arbeit mit der OVER-Klausel in SQL untersucht. Dies ist keine grundlegende Klausel und erfordert vorherige Vertrautheit mit anderen SQL-Funktionen.