首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Mysql常用sql语句(12)- group by 分组查询

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

作者头像
小菠萝测试笔记
发布2020-06-09 16:14:04
发布2020-06-09 16:14:04
5.8K0
举报

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

https://www.cnblogs.com/poloyy/category/1683347.html

前言

  • group by 关键字可以根据一个或多个字段对查询结果进行分组
  • group by 一般都会结合Mysql聚合函数来使用
  • 如果需要指定条件来过滤分组后的结果集,需要结合 关键字;原因:where不能与聚合函数联合使用

having

group by 的语法格式

代码语言:javascript
复制
GROUP BY  <字段名>[,<字段名>,<字段名>]

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

group by 单字段分组的栗子

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

代码语言:javascript
复制
select * from yyTest group by sex;
知识点

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

group by 多字段分组的栗子

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

代码语言:javascript
复制
select * from yyTest group by age,department;
知识点
  • 多个字段分组查询时,先按照第一个字段分组,如果第一个字段有相同值,则把分组结果再按第二个字段进行分组,以此类推
  • 如果第一个字段每个值都是唯一的,则不会按照第二个字段再进行分组了,具体原理可看下图

group by + group_concat()的栗子

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

代码语言:javascript
复制
select department,group_concat(username) as "部门员工名字" from yyTest group by department;

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

group by +聚合函数的栗子

有什么聚合函数?
  • count():统计记录的条数
  • sum():字段值的总和
  • max():字段值的最大值
  • min():字段值的最小值
  • avg():字段值的平均值
具体的栗子
代码语言:javascript
复制
# 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用来在所有记录的最后加上一条记录,显示上面所有记录每个字段的总和(不懂的直接看栗子)

代码语言:javascript
复制
select GROUP_CONCAT(username) from yyTest group by department with rollup;
代码语言:javascript
复制
select sum(age) from yyTest group by department with rollup;
代码语言:javascript
复制
select count(*) from yyTest group by department with rollup ;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-05-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • group by 的语法格式
  • 确认测试表里有什么数据,方便后面的栗子做对比
  • group by 单字段分组的栗子
    • 知识点
  • group by 多字段分组的栗子
    • 知识点
  • group by + group_concat()的栗子
  • group by +聚合函数的栗子
    • 有什么聚合函数?
    • 具体的栗子
  • group by + with rollup的栗子
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档