Aggregatfunktionen in MySQL
Bei Aggregatfunktionen dreht sich alles um
- Berechnungen für mehrere Zeilen durchführen
- Einer einzelnen Spalte einer Tabelle
- Und einen einzelnen Wert zurückgeben.
Der ISO-Standard definiert fünf (5) Aggregatfunktionen, nämlich:
1) ZÄHLEN
2) ZUSAMMENFASSUNG
3) AVG
4) MIND
5) MAX
Warum Aggregatfunktionen verwenden?
Aus geschäftlicher Sicht haben unterschiedliche Organisationsebenen unterschiedliche Informationsanforderungen. Topmanager sind in der Regel an ganzen Zahlen interessiert und nicht unbedingt an einzelnen Details.
Mithilfe von Aggregatfunktionen können wir einfach zusammengefasste Daten aus unserer Datenbank erstellen.
Aus unserer myflix-Datenbank kann das Management beispielsweise folgende Berichte anfordern
- Am wenigsten ausgeliehene Filme.
- Die meisten ausgeliehenen Filme.
- Durchschnittliche Anzahl, die jeder Film pro Monat ausgeliehen wird.
Wir erstellen die oben genannten Berichte ganz einfach mithilfe von Aggregatfunktionen.
Schauen wir uns die Aggregatfunktionen im Detail an.
COUNT-Funktion
Die COUNT-Funktion gibt die Gesamtzahl der Werte im angegebenen Feld zurück. Es funktioniert sowohl mit numerischen als auch mit nicht numerischen Datentypen. Alle Aggregatfunktionen schließen standardmäßig Nullwerte aus, bevor sie an den Daten arbeiten.
COUNT (*) ist eine spezielle Implementierung der COUNT-Funktion, die die Anzahl aller Zeilen in einer angegebenen Tabelle zurückgibt. COUNT (*) berücksichtigt auch Nullen und Duplikate.
Die unten gezeigte Tabelle zeigt Daten in der Filmverleihtabelle
Referenznummer | Transaktionsdatum | Rückflugdatum | Mitgliedsnummer | movie_id | movie_ zurückgegeben |
---|---|---|---|---|---|
11 | 20-06-2012 | NULL | 1 | 1 | 0 |
12 | 22-06-2012 | 25-06-2012 | 1 | 2 | 0 |
13 | 22-06-2012 | 25-06-2012 | 3 | 2 | 0 |
14 | 21-06-2012 | 24-06-2012 | 2 | 2 | 0 |
15 | 23-06-2012 | NULL | 3 | 3 | 0 |
Nehmen wir an, wir möchten ermitteln, wie oft der Film mit der ID 2 ausgeliehen wurde
SELECT COUNT(`movie_id`) FROM `movierentals` WHERE `movie_id` = 2;
Ausführen der obigen Abfrage in MySQL Werkbank gegen myflixdb gibt uns die folgenden Ergebnisse.
COUNT('movie_id') |
---|
3 |
DISTINCT-Schlüsselwort
Das Schlüsselwort DISTINCT, mit dem wir Duplikate aus unseren Ergebnissen ausschließen können. Dies wird durch die Gruppierung ähnlicher Werte erreicht.
Um das Konzept von Distinct zu verstehen, führen wir eine einfache Abfrage aus
SELECT `movie_id` FROM `movierentals`;
movie_id |
---|
1 |
2 |
2 |
2 |
3 |
Jetzt führen wir dieselbe Abfrage mit dem eindeutigen Schlüsselwort aus.
SELECT DISTINCT `movie_id` FROM `movierentals`;
Wie unten gezeigt, werden doppelte Datensätze durch „Distinct“ aus den Ergebnissen ausgeschlossen.
movie_id |
---|
1 |
2 |
3 |
MIN-Funktion
Die MIN-Funktion gibt den kleinsten Wert im angegebenen Tabellenfeld zurück.
Nehmen wir als Beispiel an, wir möchten wissen, in welchem Jahr der älteste Film in unserer Bibliothek veröffentlicht wurde MySQLVerwenden Sie die MIN-Funktion, um die gewünschten Informationen zu erhalten.
Die folgende Abfrage hilft uns dabei, dies zu erreichen
SELECT MIN(`year_released`) FROM `movies`;
Ausführen der obigen Abfrage in MySQL Workbench gegen myflixdb liefert uns die folgenden Ergebnisse.
MIN('year_released') |
---|
2005 |
MAX-Funktion
Wie der Name schon sagt, ist die MAX-Funktion das Gegenteil der MIN-Funktion. Es gibt den größten Wert aus dem angegebenen Tabellenfeld zurück.
Nehmen wir an, wir möchten das Jahr ermitteln, in dem der neueste Film in unserer Datenbank veröffentlicht wurde. Wir können dies einfach mit der MAX-Funktion erreichen.
Das folgende Beispiel gibt das letzte Erscheinungsjahr eines Films zurück.
SELECT MAX(`year_released`) FROM `movies`;
Ausführen der obigen Abfrage in MySQL Workbench mit myflixdb liefert uns die folgenden Ergebnisse.
MAX('year_released') |
---|
2012 |
SUMME-Funktion
Angenommen, wir möchten einen Bericht, der den Gesamtbetrag der bisher getätigten Zahlungen angibt. Wir können das nutzen MySQL SUM Funktion, die gibt die Summe aller Werte in der angegebenen Spalte zurück. SUM funktioniert nur bei numerischen Feldern. Nullwerte werden vom zurückgegebenen Ergebnis ausgeschlossen.
Die folgende Tabelle zeigt die Daten in der Zahlungstabelle.
Zahlungs_ID | Mitgliedsnummer | Zahlungsdatum | Beschreibung | Betrag_ gezahlt | externe_Referenznummer |
---|---|---|---|---|---|
1 | 1 | 23-07-2012 | Zahlung für Filmverleih | 2500 | 11 |
2 | 1 | 25-07-2012 | Zahlung für Filmverleih | 2000 | 12 |
3 | 3 | 30-07-2012 | Zahlung für Filmverleih | 6000 | NULL |
Die unten gezeigte Abfrage ruft alle getätigten Zahlungen ab und summiert sie, um ein einziges Ergebnis zurückzugeben.
SELECT SUM(`amount_paid`) FROM `payments`;
Ausführen der obigen Abfrage in MySQL Workbench gegen myflixdb liefert die folgenden Ergebnisse.
SUM('amount_paid') |
---|
10500 |
AVG Funktion
MySQL AVG Funktion gibt den Durchschnitt der Werte in einer angegebenen Spalte zurück. Genau wie die SUM-Funktion Funktioniert nur bei numerischen Datentypen.
Angenommen, wir möchten den durchschnittlich gezahlten Betrag ermitteln. Wir können die folgende Abfrage verwenden –
SELECT AVG(`amount_paid`) FROM `payments`;
Ausführen der obigen Abfrage in MySQL Workbench, liefert uns folgende Ergebnisse.
AVG('amount_paid') |
---|
3500 |
Rätsel
Sie denken, Aggregatfunktionen seien einfach. Versuche dies!
Das folgende Beispiel gruppiert Mitglieder nach Namen, zählt die Gesamtzahl der Zahlungen, den durchschnittlichen Zahlungsbetrag und die Gesamtsumme der Zahlungsbeträge.
SELECT m.`full_names`,COUNT(p.`payment_id`) AS `paymentscount`,AVG(p.`amount_paid`) AS `averagepaymentamount`,SUM(p.`amount_paid`) AS `totalpayments` FROM members m, payments p WHERE m.`membership_number` = p.`membership_number` GROUP BY m.`full_names`;
Ausführen des obigen Beispiels in MySQL Workbench liefert uns folgende Ergebnisse.
Zusammenfassung
- MySQL unterstützt alle fünf (5) ISO-Standard-Aggregatfunktionen COUNT, SUM, AVG, MIN und MAX.
- SUMME und AVG Funktionen funktionieren nur mit numerischen Daten.
- Wenn Sie doppelte Werte aus den Ergebnissen der Aggregatfunktion ausschließen möchten, verwenden Sie das Schlüsselwort DISTINCT. Das Schlüsselwort ALL umfasst sogar Duplikate. Wenn nichts angegeben wird, wird ALL als Standard angenommen.
- Aggregatfunktionen können in Verbindung mit anderen SQL-Klauseln verwendet werden, z GRUPPIERE NACH