Zum Hauptinhalt springen

2) Aggregationsfunktionen

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.

In diesem Beispiel wollen wir wissen, wie viele Punkte alle Weltmeister zusammen haben und verwenden dafür den SUM Befehl.

MariaDB [wmtitel]> SELECT sum(WM_Punkte)
-> as Gesamtpunktzahl
-> from wmtitel;
+-----------------+
| Gesamtpunktzahl |
+-----------------+
| 1226 |
+-----------------+
1 row in set (0.024 sec)

Mit COUNT kann die Anzahl der Datensätze ausgegeben werden:

MariaDB [wmtitel]> select count(WM_Punkte)
-> as GEsamtpunktzahl
-> from wmtitel;
+-----------------+
| Gesamtpunktzahl |
+-----------------+
| 12 |
+-----------------+
1 row in set (0.000 sec)

Mit MIN oder MAX kann dar größte bzw. kleinste Wert ausgegeben werden:

MariaDB [wmtitel]> select min(WM_Punkte) from wmtitel;
+----------------+
| min(WM_Punkte) |
+----------------+
| 76 |
+----------------+
1 row in set (0.000 sec)

MariaDB [wmtitel]> select max(WM_Punkte) from wmtitel;
+----------------+
| max(WM_Punkte) |
+----------------+
| 144 |
+----------------+
1 row in set (0.000 sec)

Der Befehl AVG kann den Durchschnitt von mehreren Datensätzen ausgeben:

MariaDB [wmtitel]> SELECT avg(WM_Punkte) AS Durchschnitt FROM wmtitel;
+--------------+
| Durchschnitt |
+--------------+
| 102.1667 |
+--------------+
1 row in set (0.000 sec)

Diese Abfrage kann zum Verständnis auch so ausgedrückt werden:

SELECT sum(WM_Punkte) / count(WM_Punkte) AS Durchschnitt FROM WMTitel;

Mit dem GROUP BY Befehl können die einzelnen Datensätze nach einem anderen Attribut sortiert, bzw. gruppiert werden. Bspw. können wir die Datensätze in der Ausgabe nach WM_Punkte sortieren:

MariaDB [wmtitel]> SELECT * FROM wmtitel GROUP BY WM_Punkte;
+--------+--------------------+------------------+-----------+-------------+
| Saison | Fahrerweltmeister | KonstrukteursWM | WM_Punkte | Team_Punkte |
+--------+--------------------+------------------+-----------+-------------+
| 1999 | Mika Häkinnen | Ferrari | 76 | 128 |
| 1997 | Jaques Villeneuve | Williams-Renault | 81 | 123 |
| 1994 | Michael Schumacher | Williams-Renault | 92 | 118 |
| 1991 | Ayrton Senna | McLaren-Honda | 96 | 139 |
| 1996 | Damon Hill | Williams-Renault | 97 | 175 |
| 1993 | Alain Prost | Williams-Renault | 99 | 168 |
| 1998 | Mika Häkinnen | McLaren-Mercedes | 100 | 156 |
| 1995 | Michael Schumacher | Benetton-Renault | 102 | 137 |
| 1992 | Nigel Mansell | Williams-Renault | 108 | 164 |
| 2001 | Michael Schumacher | Ferrari | 123 | 179 |
| 2002 | Michael Schumacher | Ferrari | 144 | 221 |
+--------+--------------------+------------------+-----------+-------------+
11 rows in set (0.006 sec)