Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Gruppieren Sie Zeilen mit der Group By-Klausel in MySQL

Dieses Tutorial ist Teil der Reihe Learn Basic SQL Queries Using MySQL. In diesem Tutorial werden wir SQL-Abfragen erörtern, um die Gruppierung der Tabellenzeilen in MySQL mithilfe der GROUP BY-Klausel mit den Aggregatfunktionen durchzuführen. Sie können auch der Verwendung von Aggregatfunktionen (SUM, AVG, MAX, MIN, COUNT, DISTINCT) in MySQL folgen, um die Aggregatfunktionen kennenzulernen.

Nach Abfrage gruppieren

Die GRUPPE NACH -Klausel kann verwendet werden, um eine Gruppierung der Tabellenzeilen durchzuführen. Es kann auch mit den Aggregatfunktionen verwendet werden, um Berichte zu erstellen und statistische Daten zu sammeln.

# GROUP BY - Syntax
SELECT column_1, column_2, ..., [<aggregate function> AS <column>] FROM `table_name` GROUP BY column_1, column_2, ...;

Erklärung der Abfrage

Die GRUPPE NACH -Klausel kann verwendet werden, um die Zeilen zu gruppieren, indem die Spalten angegeben werden, um den Satz von Zeilen zu bilden.

Wir können Aggregatfunktionen verwenden, um die GROUP BY-Klausel effektiv zu nutzen, um die Berichte zu erstellen und statistische Daten zu sammeln.

Die Gruppierung kann auf mehrere Spalten angewendet werden, wobei die erste Spalte die primäre Gruppe bildet und die nachfolgenden Spalten Untergruppen bilden.

Beispiele

Dieser Abschnitt enthält Beispiele für die Gruppierung mithilfe der GROUP BY-Klausel mit und ohne Aggregationsfunktionen. Verwenden Sie die unten aufgeführte Abfrage, um die Benutzertabelle mit den Spalten „ID“, „Vorname“, „Nachname“, „Alter“ und „Aktiv“ zum Speichern von Benutzerdaten zu erstellen.

# Create the User Table
CREATE TABLE `enterprise`.`user` (
`user_id` BIGINT NOT NULL,
`first_name` VARCHAR(45) ,
`last_name` VARCHAR(45),
`age` SMALLINT(6) NOT NULL DEFAULT 0,
`active` TINYINT(1) NOT NULL DEFAULT 0,
PRIMARY KEY (`user_id`));

Die unten genannte Abfrage kann verwendet werden, um Testdaten in die Benutzertabelle einzufügen.

# Insert Rows - All Columns
INSERT INTO `user` ( `user_id`, `first_name`, `last_name`, `age`, `active` ) VALUES
( 1, 'John', 'Smith', 18, 1 ),
( 2, 'Rick', 'Jones', 19, 1 ),
( 3, 'John', 'Ponting', 16, 0 ),
( 4, 'Harsh', 'Upadhyay', 20, 1 ),
( 5, 'Tajwinder', 'Singh', 18, 0 );

Die oben erwähnte Abfrage fügt 5 Zeilen in die Tabelle ein, die die Spalten ID, Vorname, Nachname und aktive Spalten enthalten, um 5 verschiedene Benutzer darzustellen.

Jetzt verwenden wir die GROUP BY-Klausel ohne die Aggregatfunktionen, um die Zeilen zu gruppieren. Dies kann mit der GROUP BY-Klausel in MySQL erfolgen, wie unten gezeigt.

# GROUP BY - Generate the set of active values
SELECT active from user GROUP BY active;

# Result
1
0

# GROUP BY - Generate the set of first name
SELECT first_name from user GROUP BY first_name;

# Result
John
Rick
Harsh
Tajwinder

Die oben genannten Abfragen haben die Ergebnismenge zurückgegeben, indem die Zeilen mit der GROUP BY-Klausel gruppiert wurden. Jetzt gruppieren wir die Zeilen mit der Aggregatfunktion wie unten gezeigt.

# GROUP BY - Get the maximum age of all users with specific first name
SELECT first_name, MAX(age) AS max_age from user GROUP BY first_name;

# Result
John 18
Rick 19
Harsh 20
Tajwinder 18

# GROUP BY - Get the average age of all users with specific first name
SELECT first_name, AVG(age) AS avg_age from user GROUP BY first_name;

# Result
John 17.0000
Rick 19.0000
Harsh 20.0000
Tajwinder 18.0000

So können wir die GROUP BY-Klausel mit und ohne Aggregatfunktionen verwenden, um die Zeilen der Tabelle für die spezifischen Spalten zu gruppieren.