6.1 Liste der Aggregatfunktionen
Wenn Sie die Zeilengruppierung in SQL mit dem Operator verwenden GROUP BY, können Sie SELECTin der Anweisung Funktionen verwenden, die mit den gruppierten Daten arbeiten. Solche Funktionen werden auch Aggregatfunktionen genannt.
Hier ist eine Liste der beliebtesten:
| # | Funktion | Beschreibung |
|---|---|---|
| 1 | ZÄHLEN() | Gibt die Anzahl der Werte in einer Gruppe zurück |
| 2 | SUMME() | Gibt die Summe der Werte in einer Gruppe zurück |
| 3 | MAX() | Gibt den Maximalwert einer Gruppe zurück |
| 4 | MINDEST() | Gibt den Mindestwert einer Gruppe zurück |
| 5 | AVG() | Gibt den Mittelwert einer Gruppe zurück |
| 6 | BIT_AND() | Führt ein bitweises UND über alle Gruppenwerte durch |
| 7 | BIT_OR() | Führt ein bitweises ODER über alle Gruppenwerte durch |
| 8 | BIT_XOR() | Führt ein bitweises XOR über alle Gruppenwerte durch |
| 9 | GROUP_CONCAT() | Verkettet alle Gruppenwerte zu einer Zeichenfolge |
Schauen wir uns nun einige Beispiele mit unseren Aggregatfunktionen an.
6.2 Analyse der Mitarbeitergehälter
Lassen Sie uns einige Statistiken über unsere Mitarbeiter aus der Mitarbeitertabelle berechnen .
Frage eins: Wie viele Mitarbeiter haben wir?
Wenn wir die Anzahl aller Datensätze in der Tabelle herausfinden möchten, können wir hierfür die Aggregatfunktion verwenden COUNT. Die Anfrage sieht folgendermaßen aus:
SELECT COUNT(*) FROM employee
Und MySQL gibt als Antwort die Nummer 6 zurück. Wir haben 6 Mitarbeiter in der Abteilung, darunter eine Katze. Alles ist richtig.
Frage zwei: Wie viel zahlen wir allen Mitarbeitern pro Monat?
Um diese Frage zu beantworten, müssen wir die Gehälter aller Mitarbeiter summieren. Dazu nutzen wir die AggregatfunktionSUM()
Die Anfrage sieht folgendermaßen aus:
SELECT SUM(salary) FROM employee
Beachten Sie, dass wir dieses Mal die Werte der Spalte angeben müssen, die wir zusammenfassen. Wir haben eine Gehaltsspalte angegeben . Wir können nicht einfach alle Felder in einer Tabelle summieren.
Und MySQL gibt als Antwort die Nummer 461000 zurück. Wir haben 6 Mitarbeiter in der Abteilung und das Gehalt beträgt 461.000. Zu viel.
Und zum Schluss noch die dritte Frage: Wie hoch sind unsere Höchst- und Mindestgehälter in der Abteilung? Nun, berechnen wir das Durchschnittsgehalt. Dazu benötigen wir die Funktionen MIN, MAXund AVG.
Die Abfrage wird dieses Mal etwas komplexer sein und so aussehen:
SELECT MIN(salary), AVG(salary), MAX(salary)
FROM employee
Das Ergebnis dieser Abfrage wird sein:
| MIN(Gehalt) | AVG (Gehalt) | MAX(Gehalt) |
|---|---|---|
| 1000 | 76833.3333 | 200000 |
Der Mindestlohn in unserer Abteilung beträgt 1.000 US-Dollar – sehr gut. Das Höchstgehalt beträgt 200.000, aber das ist der Direktor.
Aber das Durchschnittsgehalt ist zu hoch, man muss die Kosten irgendwie optimieren. Lass uns eine andere Katze einstellen und das war's :)
GO TO FULL VERSION