Gruppieren nach mehreren Spalten in MySQL

Preet Sanghavi 21 Januar 2022
  1. Die Group By-Anweisung in MySQL
  2. Die GROUP BY-Anweisung in MySQL mit mehreren Spalten
Gruppieren nach mehreren Spalten in MySQL

In diesem Tutorial möchten wir verstehen, wie der Befehl GROUP BY mit zwei oder mehr Spalten verwendet wird.

Der MySQL-Befehl GROUP BY ist eine Technik, mit der wir Datensätze mit identischen Werten basierend auf bestimmten Kriterien, die zum Zweck der Gruppierung definiert wurden, zusammenfassen können. Wenn wir versuchen, Daten unter Berücksichtigung nur einer einzigen Spalte zu gruppieren, werden alle Datensätze mit denselben Werten, für die die Kriterien definiert sind, in einer einzigen Ausgabe zusammengeführt.

MySQL ermöglicht es Benutzern jedoch, Daten nicht nur mit einer einzigen Spalte zu gruppieren, sondern auch mit mehreren Spalten. Wir werden diese Technik im letzten Abschnitt dieses Tutorials untersuchen. Zusammenfassend lässt sich sagen, dass wir, wenn wir versuchen, unter Berücksichtigung mehrerer Spalten zu gruppieren, ein Ergebnis erhalten, bei dem die Gruppierung der Spaltenwerte in Bezug auf mehr als eine Spalte zusammen mit einem Gruppierungskriterium erfolgt.

Auch wenn dieses Konzept schwer umzusetzen klingen mag, betrachten wir zunächst eine Spalte in unserem GROUP BY-Statement.

Bevor wir jedoch beginnen, erstellen wir ein Dummy-Dataset, mit dem wir arbeiten können. Hier erstellen wir eine Tabelle, student_details, zusammen mit einigen Zeilen darin.

-- create the table student_details
CREATE TABLE student_details(
  stu_id int,
  stu_firstName varchar(255) DEFAULT NULL,
  stu_grade int,
  stu_lastName varchar(255) DEFAULT NULL,
  primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_grade,stu_lastName) 
 VALUES(1,"Preet",40,"Sanghavi"),
 (2,"Rich",50,"John"),
 (3,"Veron",60,"Brow"),
 (4,"Geo",70,"Jos"),
 (5,"Hash",80,"Shah"),
 (6,"Sachin",90,"Parker"),
 (7,"David",25,"Miller"),
 (8,"Richa",50,"Joh"),
 (9,"Verona",60,"Brow"),
 (10,"Geoa",70,"Josh"),
 (11,"Hasha",80,"Ash"),
 (12,"Allen",90,"Parker");

Die obige Abfrage erstellt eine Tabelle zusammen mit Zeilen mit dem Vor- und Nachnamen des Schülers. Um die Einträge in den Daten einzusehen, verwenden wir folgenden Code:

SELECT * FROM student_details;

Der obige Code würde die folgende Ausgabe ergeben:

stu_id	stu_firstName	stu_grade	stu_lastName
1			Preet			40			Sanghavi
2			Rich			50			John
3			Veron			60			Brow
4			Geo				70			Jos
5			Hash			80			Shah
6			Sachin			90			Parker
7			David			25			Miller
8			Richa			50			Joh
9			Verona			60			Brow
10			Geoa			70			Josh
11			Hasha			80			Ash
12			Allen			90			Parker

Versuchen wir nun, die Verwendung einer einfachen GROUP BY-Anweisung zu verstehen, um stu_lastName mit der Summe von stu_grade als Aggregatklausel zu gruppieren.

Die Group By-Anweisung in MySQL

Wie wir wissen, hilft uns die Anweisung GROUP BY, Datensätze zu gruppieren, die dieselben Werte für die definierten Kriterien besitzen. Die grundlegende Syntax der GROUP BY-Anweisung lautet wie folgt:

SELECT col_a, col_b, aggregate_function(col_c)
FROM tab_name
WHERE condition GROUP BY criteria_col_1;

Wir können die Summe der Punktzahlen für Schüler mit demselben Nachnamen wie folgt ermitteln:

SELECT SUM(stu_grade), stu_lastName FROM student_details
GROUP BY stu_lastName;

Der oben genannte Code gibt die folgende Ausgabe aus:

SUM(stu_grade)	stu_lastName
40				Sanghavi
50				John
120				Brow
70				Jos
80				Shah
180				Parker
25				Miller
50				Joh
70				Josh
80				Ash

Die GROUP BY-Anweisung in MySQL mit mehreren Spalten

Wie oben gesehen, bietet MySQL die Funktionalität zum Gruppieren von Datensätzen basierend auf einem Kriterium. Eine weitere Ergänzung dieser Methode besteht darin, dass wir mehr als eine Spalte aus der Tabelle gleichzeitig gruppieren können. Die Syntax zum Gruppieren von mehr als einer Spalte in MySQL kann wie folgt geschrieben werden:

SELECT col_a, col_b, aggregate_function(col_c)
FROM tab_name
WHERE condition GROUP BY criteria_col_1, criteria_col_2, criteria_col_3;

Wie wir oben sehen können, sind criteria_col_1, criteria_col_2 und criteria_col_3 die drei Spalten, die in der GROUP BY-Klausel enthalten sind.

Versuchen wir nun, den Vor- und Nachnamen der Schüler anhand der Summe ihrer Noten als Aggregatfunktion zu gruppieren. Wir können diese Operation mit dem folgenden Code ausführen:

SELECT SUM(stu_grade), stu_lastName, stu_firstName
FROM student_details
GROUP BY stu_lastName, stu_firstName;

Die Ausgabe des obigen Codes ist wie folgt:

SUM(stu_grade)	stu_lastName	stu_firstName
40				Sanghavi		Preet
50				John			Rich
60				Brow			Veron
70				Jos				Geo
80				Shah			Hash
90				Parker			Sachin
25				Miller			David
50	            Joh	            Richa
60				Brow			Verona
70				Josh			Geoa
80				Ash				Hasha
90				Parker			Allen

Wie wir sehen, gruppiert die Ausgabe sowohl die Spalten stu_firstName als auch stu_lastName. Ebenso können wir mehrere Spalten in MySQL gruppieren. Daher kann die Anweisung GROUP BY mit den oben genannten Methoden effizient mit einer oder mehreren Spalten verwendet werden.

Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

Verwandter Artikel - MySQL Groupby