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 🐳.
Allgemeine Struktur einer Query mit Aggregatfunktion
MySQL 8.4
SELECT { literal | aggregatfunktion | gruppierungsfeld } [, ...]
FROM tabellen_name
GROUP BY gruppierungsfeld [, ...];- [ ]optionaler Teil
- { a | b }eine der Optionen
- ...kann wiederholt werden
- literal
Ein fester Wert wie 'text' oder 1. Er ist für alle Gruppen gleich.
- aggregatfunktion
Eine Funktion, die aus allen Zeilen einer Gruppe einen Wert berechnet, zum Beispiel AVG(price).
- gruppierungsfeld
Die Spalte, nach der die Zeilen in Gruppen aufgeteilt werden: Zeilen mit gleichem Wert landen in einer Gruppe. Du kannst mehrere Spalten durch Kommas getrennt angeben.
- tabellen_name
- Die Tabelle, deren Zeilen gruppiert werden.
So sieht zum Beispiel eine Query mit der Aggregatfunktion AVG aus:
MySQL 8.4SELECT home_type, AVG(price) as avg_price FROM Rooms GROUP BY home_type
Beschreibung der Aggregatfunktionen
Beispiele
-
Ermitteln wir die Anzahl jedes Unterkunftstyps und sortieren die Liste absteigend:
MySQL 8.4SELECT home_type, COUNT(*) as amount FROM Rooms GROUP BY home_type ORDER BY amount DESC -
Suchen wir für jede Unterkunft das späteste Abreisedatum (Feld end_date):
MySQL 8.4SELECT room_id, MAX(end_date) AS last_end_date FROM Reservations GROUP BY room_id