失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > mysql中sql语句之分组(group by)

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

时间:2020-11-14 16:53:54

相关推荐

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

文章目录

前言分组查询定义语法说明 group by使用group by + group_concat()的使用group by + 聚合函数的使用group by + having的使用group by + with rollup的使用分组查询小结

前言

今天遇到公司新来的小伙伴咨询问题,统计集团内部的在职员工与离职员工数量,如何写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练习生》

如果觉得《mysql中sql语句之分组(group by)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。