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

Clause GROUP BY SQL

Dans ce tutoriel, vous apprendrez comment regrouper les lignes en fonction de valeurs de colonnes.

Lignes de regroupement

la clause GROUP BY avecSELECTetFonctions de regroupementUtilisés conjointement pour regrouper les lignes en fonction de valeurs de colonnes communes

Pour mieux comprendre cela, regardons ce qui suitemployeesetdepartmentsTable.

+--------+--------------+------------+---------+
| emp_id | emp_name | date d'embauche | 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 | Service clientèle |
|       3 | Finance  |
|       4 | Ressources humaines |
|       5 | Ventes  |
+---------+------------------+
Table : employees
Table : departments

Maintenant, ce n'est pas seulement trouver les employés et les noms des départements auxquels ils appartiennent, mais trouver le nombre total d'employés dans chaque département.

Pour des tables de petite taille, vous pouvez simplement appliquerJointure à gaucheet calculer le nombre d'employés, mais supposez que si une table contient des milliers d'employés, ce ne sera pas aussi facile.

Dans ce cas, vous pouvez utiliser la clause GROUP BY avec la requête SELECT, comme suit :

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;

如果执行上面的语句,您将获得如下输出:

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

在下一章中,您将学习如何使用HAVING子句和group BY子句为组或聚合指定搜索条件。

注意:在SQL SELECT语句中,GROUP BY子句必须出现在FROM和WHERE子句之后,并且出现在ORDER BY之前。