Menu
Coddy logo textTech

Aggregation Functions

Teil des Abschnitts Grundlagen der SQL-Journey von Coddy — Lektion 68 von 72.

Aggregationsfunktionen werden verwendet, um den AVG() oder MAX() oder jede andere Aggregationsfunktion bis zur aktuellen Zeile zu berechnen.
Zum Beispiel könnten wir den maximalen Umsatz berechnen, den wir bis zum Ende des jeweiligen Zeitraums erzielt haben:

MonatUmsatzRegion
440Ost
520Ost
660West
755West
861Ost
SELECT month, revenue, MAX(revenue) OVER (ORDER BY month ASC) as max_revenue
from table1

Dies gibt Folgendes zurück:

MonatUmsatzmax_Umsatz
44040
52040
66060
75560
86161

Für die Monate 4 und 5 beträgt der maximale Umsatz 40, für die Monate 6 und 7 sind es 60 und für den Monat 8 sind es 61. Dies liegt daran, dass, wenn ein neuer, höherer Umsatz gefunden wird, der alte verworfen und der bisher höchste verwendet wird.

Für die AVG()-Funktion sieht es so aus:

SELECT month, revenue, AVG(revenue) OVER (ORDER BY month ASC) as avg_revenue
from table1
MonatUmsatzdurchschnittlicher_Umsatz
44040
52030
66040
75543.75
86147.2

Wir können unsere Berechnungen auch mithilfe von PARTITION BY nach bestimmten Kategorien gruppieren. Zum Beispiel:

SELECT month, revenue, region,
MAX(revenue) OVER (PARTITION BY region ORDER BY month ASC) as max_revenue
FROM table1

Würde uns Folgendes liefern:

MonatUmsatzRegionMaximaler Umsatz
440Osten40
520Osten40
660Westen60
755Westen60
861Osten61

Jetzt wird das Maximum für jede Region separat berechnet. Die Regionen Ost und West verwalten ihre eigenen laufenden Maxima unabhängig voneinander.

challenge icon

Aufgabe

Einfach

Verfügbare Tabellen und Spalten:

  • <strong>books</strong>: <strong>book</strong>, <strong>page</strong>, <strong>words</strong>

Zeigen Sie für jedes Buch den Buchnamen, die Gesamtzahl der Seiten und die Anzahl der Wörter auf jeder Seite an und berechnen Sie:

  1. Die maximale Anzahl an Wörtern, die auf einer beliebigen Seite in diesem Buch gefunden wurde
  2. Die durchschnittliche Anzahl der Wörter pro Seite für das gesamte Buch
  3. Die Differenz zwischen den Wörtern der aktuellen Seite und der durchschnittlichen Wortanzahl pro Seite des Buches

Zeigen Sie die Ergebnisse sortiert nach Buch und Seitenzahl an.

Geben Sie die folgenden Spalten zurück:

  • book
  • page
  • words
  • max_words_in_book
  • avg_words_per_page
  • diff_from_avg

Spickzettel

Window-Funktionen mit Aggregation berechnen Werte über eine Menge von Zeilen, die mit der aktuellen Zeile in Beziehung stehen. Verwenden Sie die OVER-Klausel mit ORDER BY für laufende Berechnungen:

SELECT column, 
       MAX(column) OVER (ORDER BY column ASC) as running_max,
       AVG(column) OVER (ORDER BY column ASC) as running_avg
FROM table

Verwenden Sie PARTITION BY, um Berechnungen nach Kategorien zu gruppieren:

SELECT column, category,
       MAX(column) OVER (PARTITION BY category ORDER BY column ASC) as max_per_category
FROM table

Dies berechnet das Maximum separat für jede Kategorie und behält unabhängige laufende Berechnungen bei.

Probier es selbst

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen