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.
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!
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.
Hinweis anzeigen
Verwenden Sie MAX(price) kombiniert mit OVER().
Lösung nach 3 Versuchen verfügbar
Extrahieren Sie „id“, „price“ und fügen Sie den durchschnittlichen Gesamtpreis („global_avg“) aus der Tabelle „products“ hinzu.
Hinweis anzeigen
Fügen Sie einfach AVG(price) OVER() hinzu.
Lösung nach 3 Versuchen verfügbar