MySQL数据库学习笔记(8)- DQL之分组数据

文章目录

  • 1. 分组的基本使用
  • 2. 分组过滤
  • 3. group_concat的使用


MySQL中使用 group by 对数据进行分组。它必须配合聚合函数进行使用,对数据进行分组后可以执行 countsumavgmaxmin 等操作。

1. 分组的基本使用

下面是一个简单的示例,将员工表 employee 按照部门 department 进行分组,统计各个部门的人数。

完整的表中数据如下:
MySQL数据库学习笔记(8)- DQL之分组数据_第1张图片

使用如下语句对数据进行分组:

SELECT department, Count(*) FROM employee GROUP BY department;

结果如下:
MySQL数据库学习笔记(8)- DQL之分组数据_第2张图片

2. 分组过滤

之前我们对数据过滤使用 WHERE 子句, 对于分组后的数据我们使用 HAVING 子句。此时, WHERE 子句表示对分组前数据的过滤。

  • WHERE 表示对分组前的数据进行过滤。
  • HAVING 表示对分组后的数据进行过滤。

我们想要统计,员工工资不小于10000且部门人数多于1个人的部门统计。

SQL语句可以这么写:

SELECT department, Count(*) FROM employee 
	WHERE salary >= 10000 
	GROUP BY department 
	HAVING Count(*) > 1;

结果如下:
MySQL数据库学习笔记(8)- DQL之分组数据

3. group_concat的使用

group_concat 配合 group by 一起使用,用于将某一列的值按指定的分隔符进行拼接,MySQL中默认为逗号。
比如我们按照部门分组后,想查看每个部门中都有谁,SQL语句可以写成这样:

SELECT department, Count(*), GROUP_CONCAT(name) 
	FROM employee 
	GROUP BY department;

结果如下:
MySQL数据库学习笔记(8)- DQL之分组数据_第3张图片

你可能感兴趣的:(MySQL)