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

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.

AVG Funktion

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