Lektion 2: Aggregatfunktionen

Aggregatfunktionen
Mit den Aggregatfunktionen kannst Du statistische Auswertungen numerischer Daten in einer Datenbank vornehmen. Jede Aggregatfunktion wird auf ein Attribut einer Tabelle angewendet und liefert als Ergebnis einen Zahlenwert zurück.

SUM()
SUM (=engl. für Summe)
Dieser SQL-Befehl zählt die aus der Abfrage resultierenden Zahlenwerte (numerischen Werte) der Spalte zusammen, auf die er angewendet wird.

Ein Beispiel
In diesem Beispiel wollen wir wissen, wie viele Punkte alle Weltmeister zusammen haben.

select sum(WM_Punkte) as Gesamtpunktzahl from WMTitel

Tipp: Setzt man as hinter einen Spaltennamen kann man der Spalte einen neuen Namen geben.

Erläuternde Grafik zu SUM und COUNT

COUNT()
COUNT (=engl. für Anzahl)
Dieser Befehl zählt die Anzahl der von NULL verschiedenen Werte einer Spalte in der Ergebnistabelle. Alle Datensätze zählt man mit count(*). Will man nur die verschiedenen Werte einer Spalte zählen, so benutzt man count(distinct Spaltenname).

Ein Beispiel
In diesem Beispiel wollen wir wissen, wie oft Michael Schuhmacher Weltmeister war.

select count(Fahrerweltmeister) as Anzahl_der_WM-Titel from WMTitel where Fahrerweltmeister = 'Michael Schumacher'


MIN() & MAX()
MAXIMUM (engl. für Maximum)
MINIMUM (engl. für Minimum)
Benutzt man diese Befehle, so erhält man die größte/kleinste Zahl, also das Maximum/Minimum der Spalte.

Ein Beispiel
Jetzt wollen wir wissen, was die meisten/wenigsten WM-Punkte sind, die jemals erfahren wurden.

select max(WM_Punkte) as Max_WM_Punkte from WMTitel bzw.
select min(WM_Punkte) as Min_WM_Punkte from WMTitel

Erläuternde Grafik

AVG()
AVERAGE (engl. für Mittelwert)
Ähnlich wie MIN und MAX gibt uns AVG den Mittelwert (Durchschnitt) aller Zahlenwerte einer Spalte. Dabei werden alle Einträge addiert und dann durch die Anzahl der Einträge geteilt.

Ein Beispiel
Uns interessiert jetzt wie viele Punkte die Fahrer im Durchschnitt hatten, die Weltmeister wurden.
select avg(WM_Punkte) as Durchschnitt from WMTitel
oder (nur zum Verstehen)
select sum(WM_Punkte) / count(WM_Punkte) as Durchschnitt from WMTitel

Erläuterung
avg(WM_Punkte) = sum(WM_Punkte) / count(WM_Punkte) In Zahlen: 1226 : 12 = 102,16 (Durchschnitt = Summe der Punkte : Anzahl der Zeilen)

Hinweis
Ohne die GROUP BY-Klausel kannst Du Aggregatfunktionen und die Auswahl von Attributen nicht mischen. Die folgende select-Anweisung liefert also einen Fehler:

select Fahrerweltmeister, sum(WM_Punkte) from WMTitel

Auf geht's!
Hier geht es zu den Übungen der Lektion 2.