Mysql常用sql语句(12)- group by 分组查询
2021/6/2 19:22:47
本文主要是介绍Mysql常用sql语句(12)- group by 分组查询,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
- group by 关键字可以根据一个或多个字段对查询结果进行分组
- group by 一般都会结合Mysql聚合函数来使用
- 如果需要指定条件来过滤分组后的结果集,需要结合 having 关键字;原因:where不能与聚合函数联合使用 并且 where 是在 group by 之前执行的
group by 的语法格式
GROUP BY <字段名>[,,]
确认测试表里有什么数据,方便后面的栗子做对比
group by 单字段分组的栗子
对sex单个字段进行分组查询
select * from yyTest group by sex;
知识点
分组之后,只会返回组内第一条数据;具体原理可以看看下图
group by 多字段分组的栗子
先按照age进行分组,然后再在每个组内按department分组
select * from yyTest group by age,department;
知识点
- 多个字段分组查询时,先按照第一个字段分组,如果第一个字段有相同值,则把分组结果再按第二个字段进行分组,以此类推
- 如果第一个字段每个值都是唯一的,则不会按照第二个字段再进行分组了,具体原理可看下图
group by + group_concat()的栗子
group_concat()可以将分组后每个组内的值都显示出来
select department,group_concat(username) as "部门员工名字" from yyTest group by department;
可以看到,按department部门分组 ,然后查看每个部门都有哪些员工的名字;还是很便捷的
group by +聚合函数的栗子
有什么聚合函数?
- count():统计记录的条数
- sum():字段值的总和
- max():字段值的最大值
- min():字段值的最小值
- avg():字段值的平均值
具体的栗子
# count统计条数select count(*) from yyTest group by department; # sum总和select sum(age) from yyTest group by department; # max最大值select max(age) from yyTest group by department; # min最小值select min(age) from yyTest group by department; # 平均值select avg(age) from yyTest group by department;
group by + with rollup的栗子
with rollup用来在所有记录的最后加上一条记录,显示上面所有记录每个字段的总和(不懂的直接看栗子)
select GROUP_CONCAT(username) from yyTest group by department with rollup;
select sum(age) from yyTest group by department with rollup;
select count(*) from yyTest group by department with rollup ;
这篇关于Mysql常用sql语句(12)- group by 分组查询的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-21MySQL集群部署资料:新手入门教程
- 2024-09-21MySQL集群资料:初学者入门指南
- 2024-09-21部署MySQL集群资料:新手入门教程
- 2024-09-20MySQL集群部署教程:新手入门指南
- 2024-09-20MySQL集群教程:初学者必备指南
- 2024-09-20部署MySQL集群项目实战:新手入门教程
- 2024-09-20如何部署MySQL集群:简单教程
- 2024-09-20MySQL集群部署:新手入门指南
- 2024-09-20部署MySQL集群学习:入门指南
- 2024-09-20部署MySQL集群入门教程