分组函数与分组查询回顾
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子句中
- 分组函数会自动忽略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表的截图来自老杜的视频)
以上是关于分组函数与分组查询回顾的主要内容,如果未能解决你的问题,请参考以下文章