English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SQL GROUP BY Klausel

In diesem Tutorial lernen Sie, wie Sie Zeilen basierend auf Spaltenwerten gruppieren.

gruppierte Zeilen

GROUP BY Klausel undSELECTAnweisungen undAggregationsfunktionenzusammengefasst, um Zeilen nach gemeinsamen Spaltenwerten zu gruppieren

Um dies besser zu verstehen, lassen Sie uns folgendes betrachtenemployeesunddepartmentsTabelle.

+--------+--------------+------------+---------+
| emp_id | emp_name | hire_date | dept_id |
+--------+--------------+------------+---------+
|      1 | Ethan Hunt | 2001-05-01 |       4 |
|      2 | Tony Montana | 2002-07-15 |       1 |
|      3 | Sarah Connor | 2005-10-18 |       5 |
|      4 | Rick Deckard | 2007-01-03 |       3 |
|      5 | Martin Blank | 2008-06-24 | NULL |
+--------+--------------+------------+---------+

+---------+------------------+
| dept_id | dept_name |
+---------+------------------+
|       1 | Administration |
|       2 | Customer Service |
|       3 | Finance |
|       4 | Human Resources |
|       5 | Sales |
+---------+------------------+
Tabelle: employees
Tabelle: departments

Jetzt geht es nicht nur darum, Mitarbeiter und die Namen der Abteilungen zu finden, sondern auch um die Gesamtzahl der Mitarbeiter in jeder Abteilung.

Für kleine Tabellen können Sie einfach anwendenLinkes Joinsund die Anzahl der Mitarbeiter berechnen, aber angenommen, eine Tabelle enthält Tausende von Mitarbeitern, wird dies nicht so einfach sein.

In diesem Fall kann die GROUP BY Klausel zusammen mit der SELECT-Anweisung wie folgt verwendet werden:

SELECT t1.dept_name, count(t2.emp_id) AS total_employees
FROM departments AS t1 LEFT JOIN employees AS t2
ON t1.dept_id = t2.dept_id
GROUP BY t1.dept_name;

Wenn Sie den obigen Befehl ausführen, erhalten Sie den folgenden Ausgabe:

+-------------------+-----------------+
| dept_name         | total_employees |
+-------------------+-----------------+
| Administration    |               1 |
| Customer Service  |               0 |
| Finance           |               1 |
| Human Resources   |               1 |
| Sales             |               1 |
+-------------------+-----------------+

Im nächsten Kapitel werden Sie lernen, wie Sie die HAVING- und GROUP BY-Klauseln verwenden, um Suchkriterien für Gruppen oder Aggregationen zu spezifizieren.

Hinweis:in SQL SELECTAnweisung, die GROUP BY-Klausel muss zwischen FROM undWHERENach dem Klausel und erscheint inORDER BYvorher.