Premium

Aggregatfunktionen

Im Artikel über Gruppierungen haben wir erwähnt, dass wir bei GROUP BY Aggregatfunktionen verwenden können. Sprechen wir jetzt ausführlicher darüber 🐳.

Eine Aggregatfunktion ist eine Funktion, die eine Berechnung über eine Wertemenge ausführt und einen einzelnen Wert zurückgibt.

Allgemeine Struktur einer Query mit Aggregatfunktion

MySQL 8.1
SELECT [Literale, Aggregatfunktionen, Gruppierungsfelder]
FROM tabellen_name
GROUP BY gruppierungsfelder;

So sieht zum Beispiel eine Query mit der Aggregatfunktion AVG aus:

MySQL 8.1
SELECT home_type, AVG(price) as avg_price FROM Rooms
GROUP BY home_type
home_typeavg_price
Private room89.4286
Entire home/apt148.6667
Shared room40

Beschreibung der Aggregatfunktionen

FunktionBeschreibung
SUM(tabellen_feld)Gibt die Summe der Werte zurück
AVG(tabellen_feld)Gibt den Durchschnittswert zurück
COUNT(tabellen_feld)Gibt die Anzahl der Datensätze zurück
MIN(tabellen_feld)Gibt den minimalen Wert zurück
MAX(tabellen_feld)Gibt den maximalen Wert zurück

Aggregatfunktionen berücksichtigen nur Werte, die ungleich NULL sind. Eine Ausnahme bildet COUNT(*).

Beispiele

  • Ermitteln wir die Anzahl jedes Unterkunftstyps und sortieren die Liste absteigend:

    MySQL 8.1
    SELECT home_type, COUNT(*) as amount FROM Rooms
    GROUP BY home_type
    ORDER BY amount DESC
    
    home_typeamount
    Private room28
    Entire home/apt21
    Shared room1
  • Suchen wir für jede Unterkunft das späteste Abreisedatum (Feld end_date):

    MySQL 8.1
    SELECT room_id, MAX(end_date) AS last_end_date FROM Reservations
    GROUP BY room_id
    
    room_idlast_end_date
    12019-02-04T12:00:00.000Z
    22020-03-23T09:00:00.000Z
    132020-04-21T10:00:00.000Z
    162019-06-24T10:00:00.000Z
    212020-02-29T10:00:00.000Z
    192020-05-02T10:00:00.000Z
    82020-01-21T12:00:00.000Z
    72019-09-17T10:00:00.000Z
    52020-05-15T10:00:00.000Z
    502019-11-25T11:00:00.000Z
    492020-06-11T10:00:00.000Z
    482019-11-10T10:00:00.000Z
    322020-01-18T13:00:00.000Z
    172019-11-05T09:00:00.000Z
    252020-04-22T09:00:00.000Z
    142020-02-12T10:00:00.000Z
    392019-12-09T10:00:00.000Z
    382020-03-23T10:00:00.000Z