Erklärvideo
Aggregatsfunktionen in SQL
Aggregatsfunktionen fassen Daten zusammen, indem sie mehrere Zeilen zu einem einzelnen Wert verdichten. Sie sind die Grundlage für Statistiken und Datenanalyse in SQL.
Stellen wir uns folgende Tabelle mit Verkaufsdaten vor:
sales
product_id | product_name | category | price | units_sold | sale_date |
---|---|---|---|---|---|
101 | Laptop | Electronics | 1200 | 5 | 2023-06-01 |
102 | Smartphone | Electronics | 800 | 10 | 2023-06-01 |
103 | T-Shirt | Clothing | 25 | 50 | 2023-06-02 |
104 | Jeans | Clothing | 60 | 20 | 2023-06-02 |
105 | Headphones | Electronics | 100 | 15 | 2023-06-03 |
106 | Tablet | Electronics | 350 | 8 | 2023-06-03 |
107 | Dress | Clothing | 80 | 12 | 2023-06-04 |
108 | Laptop | Electronics | 1200 | 3 | 2023-06-04 |
COUNT
Zählt die Anzahl der Datensätze. COUNT(*)
zählt alle Zeilen, COUNT(column)
zählt Zeilen ohne NULL-Werte, und COUNT(DISTINCT column)
zählt eindeutige Werte.
count-example
Wichtige Hinweise zu Aggregatsfunktionen
1. Vorsicht beim Mischen von aggregierten und nicht-aggregierten Spalten
Folgendes Query ist problematisch, da product_name
eine normale Spalte ist, während AVG(price)
aggregiert wird. Welches product_name
soll angezeigt werden, wenn der Durchschnitt aus mehreren Zeilen berechnet wird? Der SQL-Standard verbietet solche logisch widersprüchliche Queries eigentlich, aber viele Server füllen einfach den letzten oder irgendeinen Wert ein. Also Achtung beim Vermischen von aggregierten und nicht-aggregierten Spalten - da passieren häufig Logikfehler!
incorrect-example
2. Korrekte Verwendung mit GROUP BY
Es ist aber nicht unmöglich aggregierte und nicht-aggregierte Spalten zu mischen, wie in diesem Beispiel. Bei der Verwendung von GROUP BY
hat jede Gruppe genau einen Wert für die nicht-aggregierte Spalte category
, daher ist dies korrekt.
correct-groupby
3. GROUP BY kann mehrere Spalten haben
Dies gruppiert die Daten nach Kategorie UND Datum.
multi-column-groupby