mysql中sql语句之分组(group by)

前言

今天遇到公司新来的小伙伴咨询问题,统计集团内部的在职员工与离职员工数量,如何写sql统计。

这个问题其实还是比较容易来实现,首先想到的就是分组(group by)以及count函数来实现,这里面也会用到case when语句的一些知识。

接下来,我们进入正题

分组查询

定义

分组查询:就是将我们要查询结果按照指定字段进行分组,字段中数据相等的分为一组。

语法

GROUP BY column_name [HAVING 条 件 表 达 式] [WITH ROLLUP]

说明

1、column_name : 是指按照指定字段的值进行分组规则。
2、HAVING 条 件 表 达 式: 用来进行过滤分组后的数据。
3、WITH ROLLUP:在所有记录的最后加上一条记录,显示select查询时聚合函数的统计和计算结果

group by使用

group by它可用于单个字段分组操作,也可用于多个字段分组操作

group by + group_concat()的使用

group_concat(column_name): 统计每个分组指定字段的信息集合,每个信息之间使用逗号进行分割

-- 根据isv_no字段进行分组,查询isv_no字段和分组的state字段信息
select isv_no,group_concat(state) from t_mch_info group by isv_no;

结果如下:
在这里插入图片描述

group by + 聚合函数的使用

-- 统计isv_no下有多少条数据
select isv_no,count(state) from t_mch_info group by isv_no;

group by + having的使用

having他的作用和where有类似功能,都是用来过滤数据的,但having是过滤分组数据的,只能用于group by

-- 用来统计isv_no下有数据条数大于3的
select isv_no,count(state) from t_mch_info group by isv_no HAVING count(state)>3;

group by + with rollup的使用

with rollup他的作用是:在最后记录后面新增一行,显示select查询时聚合函数的统计结果和计算结果

select isv_no,count(state) from t_mch_info group by isv_no with rollup;

结果如下:
在这里插入图片描述

分组查询小结

1、group by:他是根据指定的一个或者多个字段对数据进行分组操作;
2、group_concat(column):这个函数是统计每个分组指定的字段的信息集合;
3、group by:它在和聚合函数结合使用的时候, 聚合函数统计和计算的是每个分组的数据项;
4、having:是对分组的数据结果,进行条件过滤;
5、with rollup:他是指在最后记录后面新增一行,用来显示select查询时聚合函数的统计和计算结果值;

欢迎大家点击下方卡片,关注《coder练习生》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ybb_ymm

你的鼓励会是对我最大的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值