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

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

1. 分组的基本使用

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

完整的表中数据如下:

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

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

结果如下:


2. 分组过滤

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

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

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

SQL语句可以这么写:

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

结果如下:


3. group_concat的使用

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

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

结果如下:

不会飞的纸飞机
扫一扫二维码,了解我的更多动态。

下一篇文章:MySQL数据库学习笔记(9)- DQL之表连接(内连接、外连接、自连接)