sql语句分组mysql_Mysql常用sql语句(12)- group by 分组查询

测试必备的Mysql常用sql语句系列

前言

group by 关键字可以根据一个或多个字段对查询结果进行分组

group by 一般都会结合Mysql聚合函数来使用

如果需要指定条件来过滤分组后的结果集,需要结合 having 关键字;原因:where不能与聚合函数联合使用 并且where 是在 group by 之前执行的

group by 的语法格式

GROUP BY [,,]

确认测试表里有什么数据,方便后面的栗子做对比

934d36ad8fc4ff526b47587d32591daa.png

group by 单字段分组的栗子

对sex单个字段进行分组查询

select * from yyTest group by sex;

3b167d10eae4b4b5adf7baac6b59b028.png

知识点

分组之后,只会返回组内第一条数据;具体原理可以看看下图

47d53736763737bdbaeb5e8df4bd17aa.png

group by 多字段分组的栗子

先按照age进行分组,然后再在每个组内按department分组

select * from yyTest group by age,department;

342d93f0055ac84d78ea3a2867deecee.png

知识点

多个字段分组查询时,先按照第一个字段分组,如果第一个字段有相同值,则把分组结果再按第二个字段进行分组,以此类推

如果第一个字段每个值都是唯一的,则不会按照第二个字段再进行分组了,具体原理可看下图

3358259548b5ab7f6a368aee00333b73.png

group by + group_concat()的栗子

group_concat()可以将分组后每个组内的值都显示出来

select department,group_concat(username) as "部门员工名字" from yyTest group by department;

20b96121312d31ede1e4e4b17fdde8f7.png

可以看到,按department部门分组 ,然后查看每个部门都有哪些员工的名字;还是很便捷的

group by +聚合函数的栗子

有什么聚合函数?

count():统计记录的条数

sum():字段值的总和

max():字段值的最大值

min():字段值的最小值

avg():字段值的平均值

具体的栗子

# count统计条数select count(*) from yyTest group bydepartment;

# sum总和select sum(age) from yyTest group bydepartment;

# max最大值select max(age) from yyTest group bydepartment;

# min最小值select min(age) from yyTest group bydepartment;

# 平均值select avg(age) from yyTest group by department;

1615cebfa332bc9c072ffcd4952cd5af.png

group by + with rollup的栗子

with rollup用来在所有记录的最后加上一条记录,显示上面所有记录每个字段的总和(不懂的直接看栗子)

select GROUP_CONCAT(username) from yyTest group by department with rollup;

89bc2a30f89408cd2110b637e7e5b030.png

select sum(age) from yyTest group by department with rollup;

79a49119417dccec1aa3e55039a5dd21.png

select count(*) from yyTest group by department with rollup ;

30a1a15098a668ff6adef874a2a195b0.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值