Direkt zum Hauptinhalt springen
eLearner.app
Modul 13 · Lektion 1 von 449/57 im Kurs~15 min
Lektionen des Moduls (1/4)

Einführung und die OVER-Klausel

Einführung und die OVER-Klausel

In den vorherigen Lektionen haben wir gesehen, wie man GROUP BY zum Aggregieren von Daten verwendet. Allerdings weist GROUP BY eine große Einschränkung auf: Es reduziert Zeilen. Wenn Sie nach Stadt gruppieren, erhalten Sie eine einzelne Zeile pro Stadt und verlieren die Details der einzelnen Kunden.

Hier kommen Fensterfunktionen ins Spiel. Sie ermöglichen Ihnen die Durchführung aggregierter Berechnungen (z. B. Summen oder Durchschnittswerte) unter Beibehaltung der ursprünglichen Zeilen.

Die OVER()-Klausel

Das magische Schlüsselwort ist OVER(). Es teilt der Datenbank mit, dass die Aggregatfunktion (z. B. SUM, AVG, COUNT) als Fensterfunktion behandelt werden soll, die über die gesamte Ergebnismenge (das globale „Fenster“) berechnet, aber auf jede einzelne Zeile angewendet und zurückgegeben werden soll.

SQL
SELECT
  order_id,
  total_amount,
  AVG(total_amount) OVER() AS global_average
FROM orders;

In diesem Beispiel behalten wir jede einzelne Bestellung bei, aber jede Zeile hat auch eine global_average-Spalte mit dem Durchschnitt aller Bestellungen. Sehr nützlich, um beispielsweise zu messen, wie stark eine Bestellung vom Durchschnitt abweicht!

Übung#sql.m13.l1.e1
Versuche: 0Wird geladen…

Wählen Sie in der Tabelle „Produkte“ die Spalte „Preis“ aus. Fügen Sie eine Spalte mit dem Namen „global_max_price“ hinzu, die den mit einer Fensterfunktion für die gesamte Tabelle berechneten Höchstpreis enthält.

Editor wird geladen…
Hinweis anzeigen

Verwenden Sie MAX(price) kombiniert mit OVER().

Lösung nach 3 Versuchen verfügbar

Übung#sql.m13.l1.e2
Versuche: 0Wird geladen…

Extrahieren Sie „id“, „price“ und fügen Sie den durchschnittlichen Gesamtpreis („global_avg“) aus der Tabelle „products“ hinzu.

Editor wird geladen…
Hinweis anzeigen

Fügen Sie einfach AVG(price) OVER() hinzu.

Lösung nach 3 Versuchen verfügbar