分组函数与分组查询回顾

Posted 若曦`

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分组函数与分组查询回顾相关的知识,希望对你有一定的参考价值。

1. 数据处理函数(单行处理函数)

函数名称描述
lower转换小写
upper转换大写
substr截取字符串
length区长度
trim去空格
str_to_date将字符串转换成日期
date_format格式化日期
format设置千分位
round四舍五入
rand()生成随机数
ifnull可以将null转换成一个具体值

2. 分组函数(多行处理函数)

函数名称描述
count()计数
sum()求和
avg()平均值
max()最大值
min()最小值

注意点

  • 分组函数在使用的时候必须先进行分组,然后才能用。如果没有对数据进行分组,整张表默认为一组
  • 分组函数不能够直接使用在where子句中,这就是因为where
  • 分组函数会自动忽略null值
    在这里插入图片描述
    where执行的时候,还没有进行分组,所以不能在子句中使用分组函数,这与语句的执行顺序有关

使用示例
在这里插入图片描述
在这里插入图片描述
count(*) 与 count(具体字段)的区别

  • count(某字段):统计某个字段不为null的数量
  • count(*):统计整张表每行中不全为null的数量

分组函数可以联合使用
在这里插入图片描述

3. 分组查询(group by)

使用模板 select ... from 表名 group by(某些字段)

函数的执行顺序
select ... from ... where ... group by ... order by...

普通分组

使用示例
在这里插入图片描述
查询每个人的money总和
在这里插入图片描述
在这里插入图片描述

执行顺序
(1) 通过group by将整张表以userName的方式分组 相当于整张表拆分成了3张表(组)(小明表、小红表、小丑表)
(2) 对分组后的每一组的money求和
(3) 对拆分后的每一组使用select语句查询出一条记录,然后将每组的一行记录合并在一起,就是最后的结果

联合分组

在这里插入图片描述
在这里插入图片描述

4. 分组后的过滤(having)

使用having语句可以对分完组后的数据继续过滤

所以having不能单独使用,也不能代替where,having必须和group by联合使用

方式① 先分组,后having条件过滤
在这里插入图片描述
方式② 先过滤 再分组
在这里插入图片描述
使用策略:where和having,优先选择where,当where解决不了时,再使用having

where不能解决的查询问题

比如需要先使用分组函数筛选再分组的情况
在这里插入图片描述
条件查询的总结
在这里插入图片描述
综合使用案例
在这里插入图片描述
( emp表的截图来自老杜的视频)

以上是关于分组函数与分组查询回顾的主要内容,如果未能解决你的问题,请参考以下文章

MySql的回顾三:流程控制函数/统计函数/分组查询

快速回顾MySQL:汇总和分组

Django聚合函数与分组查询

快速回顾MySQL:汇总和分组

30分钟回顾MySQL语法(下)

MySQL---数据库查询详细教程{查询排序聚合函数分组}