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


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

1. 分组的基本使用

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

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

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

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

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

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之分组数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值