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

Gruppieren mit PARTITION BY

Gruppierung mit PARTITION BY

Globale Berechnungen für jede Zeile sind praktisch, reichen aber oft nicht aus. Möglicherweise möchten wir den Durchschnitt pro Kategorie oder pro Kunde berechnen und dabei die ursprünglichen Details in jeder Zeile beibehalten.

Hier kommt PARTITION BY in der OVER(...)-Klausel ins Spiel.

So funktioniert PARTITION BY

Vom Konzept her verhält es sich ähnlich wie GROUP BY, aber anstatt Zeilen im Ergebnis zu reduzieren, definiert es nur die Grenze des „Datenfensters“, an dem die Funktion arbeitet, um das Ergebnis für die einzelne Zeile zu berechnen.

SQL
SELECT
  product_name,
  category_id,
  price,
  AVG(price) OVER(PARTITION BY category_id) AS cat_avg_price
FROM products;

Jede Produktzeile behält ihre eigenen Details und die Spalte cat_avg_price zeigt den Durchschnitt an, der auf die Produkte derselben Kategorie beschränkt ist.

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

Extrahieren Sie aus der Tabelle „Produkte“ „id“, „category_id“ und „price“. Fügen Sie eine „category_total“-Spalte hinzu, die mithilfe von Fensterfunktionen die SUMME von „price“ für jede „category_id“ berechnet.

Editor wird geladen…
Hinweis anzeigen

Verwenden Sie SUM(price) OVER(PARTITION BY Category_id).

Lösung nach 3 Versuchen verfügbar

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

Zeigen Sie in der Tabelle „Rezensionen“ „product_id“, „rating“ und „avg_product_rating“ (die durchschnittliche Bewertung, aufgeteilt nach Produkt) an. Alle Zeilen anzeigen.

Editor wird geladen…
Hinweis anzeigen

Verwenden Sie AVG(Rating) und PARTITION BY product_id. Wandeln Sie es bei Bedarf in NUMERIC um.

Lösung nach 3 Versuchen verfügbar