Tutorial zu MySQL-Aggregatfunktionen: SUMME, AVG, MAX, MIN, COUNT, DISTINCT

Anonim

Bei aggregierten Funktionen dreht sich alles um

  • Berechnungen für mehrere Zeilen durchführen
  • Von einer einzelnen Spalte einer Tabelle
  • Und einen einzelnen Wert zurückgeben.

Die ISO-Norm definiert nämlich fünf (5) Aggregatfunktionen;

1) COUNT

2) SUMME
3) AVG
4) MIN
5) MAX

Warum Aggregatfunktionen verwenden?

Aus geschäftlicher Sicht haben unterschiedliche Organisationsebenen unterschiedliche Informationsanforderungen. Top-Level-Manager sind in der Regel daran interessiert, ganze Zahlen zu kennen und die einzelnen Details nicht zu benötigen.

> Mit aggregierten Funktionen können wir auf einfache Weise zusammengefasste Daten aus unserer Datenbank erstellen.

In unserer myflix-Datenbank erfordert das Management möglicherweise folgende Berichte

  • Am wenigsten ausgeliehene Filme.
  • Die meisten ausgeliehenen Filme.
  • Durchschnittliche Anzahl, die jeder Film in einem Monat ausgeliehen wird.

Wir erstellen die obigen Berichte einfach mit Aggregatfunktionen.

Lassen Sie uns die Aggregatfunktionen im Detail untersuchen.

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 an den Daten gearbeitet wird.

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 folgende Tabelle zeigt Daten in der Movierentals-Tabelle

Referenznummer Transaktionsdatum Rückflugdatum Mitgliedsnummer movie_id movie_ kehrte zurück
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 herausfinden, wie oft der Film mit der ID 2 ausgeliehen wurde

SELECT COUNT(`movie_id`) FROM `movierentals` WHERE `movie_id` = 2;

Wenn Sie die obige Abfrage in MySQL Workbench für myflixdb ausführen, erhalten Sie die folgenden Ergebnisse.

 
COUNT('movie_id')
3

DISTINCT- Schlüsselwort

Das Schlüsselwort DISTINCT, mit dem wir Duplikate in unseren Ergebnissen weglassen können. Dies wird erreicht, indem ähnliche Werte zusammengefasst werden.

Lassen Sie uns eine einfache Abfrage ausführen, um das Konzept von Distinct zu verstehen

SELECT `movie_id` FROM `movierentals`;
 
movie_id
1
2
2
2
3

Lassen Sie uns nun dieselbe Abfrage mit dem eindeutigen Schlüsselwort ausführen -

SELECT DISTINCT `movie_id` FROM `movierentals`;

Wie unten gezeigt, werden bei doppelten Datensätzen in den Ergebnissen keine eindeutigen Datensätze verwendet.

 
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. Wir können die MIN-Funktion von MySQL verwenden, um die gewünschten Informationen abzurufen.

Die folgende Abfrage hilft uns dabei

SELECT MIN(`year_released`) FROM `movies`;

Wenn Sie die obige Abfrage in MySQL Workbench für myflixdb ausführen, erhalten Sie 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 erhalten, in dem der neueste Film in unserer Datenbank veröffentlicht wurde. Wir können die MAX-Funktion leicht verwenden, um dies zu erreichen.

Das folgende Beispiel gibt das letzte veröffentlichte Filmjahr zurück.

SELECT MAX(`year_released`) FROM `movies`;

Wenn Sie die obige Abfrage in der MySQL-Workbench mit myflixdb ausführen, erhalten Sie die folgenden Ergebnisse.

 
MAX('year_released')
2012

SUM- Funktion

Angenommen, wir möchten einen Bericht, der den Gesamtbetrag der bisher geleisteten Zahlungen angibt. Wir können die MySQL SUM- Funktion verwenden, die die Summe aller Werte in der angegebenen Spalte zurückgibt . SUM funktioniert nur mit numerischen Feldern . Nullwerte werden vom zurückgegebenen Ergebnis ausgeschlossen.

Die folgende Tabelle zeigt die Daten in der Zahlungstabelle.

Zahlungs-ID Mitgliedsnummer Zahlungsdatum Beschreibung Betrag_ bezahlt external_ reference _number
1 1 23-07-2012 Filmverleihzahlung 2500 11
2 1 25-07-2012 Filmverleihzahlung 2000 12
3 3 30-07-2012 Filmverleihzahlung 6000 NULL

Die unten gezeigte Abfrage ruft alle geleisteten Zahlungen ab und summiert sie, um ein einzelnes Ergebnis zurückzugeben.

SELECT SUM(`amount_paid`) FROM `payments`;

Das Ausführen der obigen Abfrage in der MySQL-Workbench für die myflixdb führt zu den folgenden Ergebnissen.

 
SUM('amount_paid')
10500

AVG- Funktion

Die MySQL AVG-Funktion gibt den Durchschnitt der Werte in einer angegebenen Spalte zurück . Genau wie die SUMME-Funktion funktioniert sie 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`;

Wenn Sie die obige Abfrage in der MySQL-Workbench ausführen, erhalten Sie die folgenden Ergebnisse.

 
AVG('amount_paid')
3500

Zusammenfassung

  • MySQL unterstützt alle fünf (5) ISO-Standardaggregatfunktionen COUNT, SUM, AVG, MIN und MAX.
  • SUM- 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 enthält sogar Duplikate. Wenn nichts angegeben ist, wird ALL als Standard angenommen.
  • Aggregatfunktionen können in Verbindung mit anderen SQL-Klauseln wie GROUP BY verwendet werden

Rätsel

Sie denken, Aggregatfunktionen sind 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`;

Wenn Sie das obige Beispiel in der MySQL-Workbench ausführen, erhalten Sie die folgenden Ergebnisse.