Zusammenfassung: In diesem Tutorial erfahren Sie, wie Sie MySQL GROUP BY
verwenden, um Zeilen basierend auf Werten von Spalten oder Ausdrücken in Untergruppen zu gruppieren.
Einführung in MySQL GROUP BY Klausel
DieGROUP BY
Klausel gruppiert eine Reihe von Zeilen in eine Reihe von Zusammenfassungszeilen nach Werten von Spalten oder Ausdrücken. GROUP BY
Klausel gibt eine Zeile für jede Gruppe. Mit anderen Worten, es reduziert die Anzahl der Zeilen in der Ergebnismenge.,
Sie verwenden häufig die Klausel GROUP BY
mit Aggregatfunktionen wie SUM
, AVG
, , MIN
und COUNT
. Die Aggregatfunktion, die in der SELECT
– Klausel angezeigt wird, enthält Informationen zu jeder Gruppe.
Die GROUP BY
Klausel ist eine optionale Klausel der SELECT
Anweisung., Im Folgenden wird die Syntax der GROUP BY
– Klausel dargestellt:
DieGROUP BY
– Klausel muss nach den KlauselnFROM
undWHERE
angezeigt werden. Nach den Schlüsselwörtern GROUP BY
befindet sich eine Liste von durch Kommas getrennten Spalten oder Ausdrücken, die Sie als Kriterien zum Gruppieren von Zeilen verwenden möchten.,
MySQL evaluates the GROUP BY
clause after the FROM
, WHERE
and SELECT
clauses and before the HAVING
, ORDER BY
and LIMIT
clauses:
MySQL GROUP BY examples
Let’s take some example of using the GROUP BY
clause.,
A) Einfache MySQL GROUP BY example
Schauen wir uns die Tabelle orders
in der Beispieldatenbank an.,
Angenommen, sie wollen gruppe werte der auftrag der status in untergruppen, sie verwenden die GROUP BY
klausel mit die status
spalte als die folgenden abfrage:
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
Wie Sie sehen können, gibt die GROUP BY
Klausel eindeutige Vorkommen von status
Werte., Es funktioniert wie der Operator DISTINCT
, wie in der folgenden Abfrage gezeigt:
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
B) Verwenden von MySQL GROUP BY mit Aggregatfunktionen
Mit den Aggregatfunktionen können Sie die Berechnung einer Reihe von Zeilen durchführen und einen einzelnen Wert zurückgeben. DieGROUP BY
– Klausel wird häufig mit einer Aggregatfunktion verwendet, um die Berechnung durchzuführen und einen einzelnen Wert für jede Untergruppe zurückzugeben.,
Wenn Sie beispielsweise die Anzahl der Bestellungen in jedem Status kennen möchten, können Sie die COUNT
– Funktion mit der GROUP BY
– Klausel wie folgt verwenden:
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
Siehe die folgenden orders
und orderdetails
Tabelle.,
Um den Gesamtbetrag aller Bestellungen nach Status zu erhalten, verbinden Sie die orders
Tabelle mit der orderdetails
Tabelle und verwenden Sie die SUM
Funktion zur Berechnung des Gesamtbetrags. Siehe folgende Abfrage:
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
Ebenso gibt die folgende Abfrage die Bestellnummern und den Gesamtbetrag jeder Bestellung zurück.,
Code language: SQL (Structured Query Language) (sql)
Probieren Sie Es Aus
C) MySQL GROUP BY-Ausdruck Beispiel
zusätzlich zu Spalten Sie können Zeilen gruppieren, indem Sie Ausdrücken. Die folgende Abfrage ermittelt den Gesamtumsatz für jedes Jahr.
Probieren Sie es aus
In diesem Beispiel haben wir die Funktion YEAR
verwendet, um Jahresdaten aus dem Bestelldatum zu extrahieren ( orderDate
)., Wir haben nur Bestellungen mit shipped
Status in den Gesamtumsatz aufgenommen. Beachten Sie, dass der Ausdruck, der in der Klausel SELECT
angezeigt wird, mit dem in der Klausel GROUP BY
identisch sein muss.
D) Wenn Sie MySQL GROUP BY mit HAVING-Klausel example
verwenden, um die von GROUP BY
– Klausel zurückgegebenen Gruppen zu filtern, verwenden Sie eine HAVING
– Klausel. Die folgende Abfrage verwendet die HAVING
– Klausel, um den Gesamtumsatz der Jahre nach 2003 auszuwählen.,
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
Die GROUP BY Klausel: MySQL vs. standard SQL
Standard SQL erlaubt es Ihnen nicht, einen Alias in der GROUP BY
Klausel, MySQL unterstützt dies jedoch.
Die folgende Abfrage extrahiert beispielsweise das Jahr aus dem Bestelldatum. Es verwendet zuerst year
als Alias des Ausdrucks YEAR(orderDate)
und verwendet dann die year
alias in der GROUP BY
Klausel., Diese Abfrage ist in Standard-SQL nicht gültig.
Probieren Sie es aus
Mit MySQL können Sie die Gruppen auch in aufsteigender oder absteigender Reihenfolge sortieren, während das Standard-SQL dies nicht tut. Die Standardreihenfolge ist aufsteigend., Wenn Sie beispielsweise die Anzahl der Bestellungen nach Status ermitteln und den Status in absteigender Reihenfolge sortieren möchten, können Sie die Klausel GROUP BY
mit DESC
als folgende Abfrage verwenden:
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
Beachten Sie, dass wir DESC
in der GROUP BY
– Klausel verwendet haben, um die status
in absteigender Reihenfolge zu sortieren., Wir könnten auch explizit ASC
in der GROUP BY
– Klausel angeben, um die Gruppen nach Status in aufsteigender Reihenfolge zu sortieren.
In diesem Tutorial haben wir Ihnen gezeigt, wie Sie mit der Klausel MySQL GROUP BY
Zeilen basierend auf Werten von Spalten oder Ausdrücken in Untergruppen gruppieren.
- War dieses tutorial hilfreich?
- YesNo