MySQL分组查询有关知识总结

目录

 4. 分组查询(group by)

4.1 概述

4.2 分组函数

4.2.1 单个使用 

4.2.2 组合使用

4.2.3 注意!

4.3 group by 

4.3.1 单个字段

4.3.2 多个字段  

4.3.3 提醒!

4.4 having

4.5 分组查询演示


 4. 分组查询(group by)

分组查询在DQL语句中非常重要,非常值得花费时间进行学习;

4.1 概述

什么是分组查询呢?

举一个例子,查询一个 student 表中男生的平均成绩,我们首先需要将表分为男,女两个部分,求男生分数的总和,最后求出平均分即可。这个问题就是分组查询。

那么求男生分数的总和需要用到聚合函数,因此在学习分组查询前需要学习聚合函数

4.2 分组函数

分组函数又叫做聚合函数,经常与关键字 group by 搭配使用,分组函数共有五个:

COUNT():统计数量:

MAX:求最大值,

MIN:求最小值;

SUM:求和;

AVG:求平均数 

4.2.1 单个使用 

sum:求和;

count:计数;

max:最大值;

min:最小值;

avg:平均值;

4.2.2 组合使用

 如下,可以同时使用分组函数; 

4.2.3 注意!

(1)分组函数自动忽略空,因此 count  不能统计值为 null 的列。我们经常统计主键来进行计算。

如果统计所有列的话,可以使用 select count(*)from 表名(对所有记录的处理,输出结果为整张表所有记录的行数

即某一行的每一列都不为空,该行就会被统计,避免因字段内容为 null 而忽略统计;

如下,统计的 comm 只有 4 个,但整张表有14 行记录,这是因为 comm 的内容为 null 的10 行没有被统计;

此外, count ( * ) 与 count (常数)的效果是一样的;

(2)null 不参与所有聚合函数的计算

这与前面所说的分组函数自动忽略 null 有关;

(3)分组函数必须先分组再使用(以上演示分组函数没有使用 group by,则默认整张表是一组); 

(4)分组函数不能直接在 where 子句中使用,即不能充当 where 的条件

这涉及到执行顺序:from > where > group by > select > order by ;

如下,分组函数与 where 同时使用,当然会报错;

4.3 group by 
4.3.1 单个字段

 分组查询需要使用 group by 关键字 ;

4.3.2 多个字段  

 group by 后面可以有多个字段;

如下,查询每个部门不同岗位的的平均薪资;

4.3.3 提醒!

 DDL 语句中有 group by 的话,select 后面只能是参与分组的字段或参与分组函数的字段,或者这两者的组合;

4.4 having

having 与 where 功能相似,都是过滤的作用;

但是,where 是 group by 之前过滤,having 是 group by 之后过滤; 

having 必须搭配 group by 使用

另外, 越早过滤效率越高;

4.5 分组查询演示

 在查询数据时,很多时候目标远大 ,一次很难达到,不如将目标分解,一步一步去实现,脚踏实地,稳扎稳打;

如下,分为两次去实现;

 当然,也可以这样写,使查询效率更高;

  • 24
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值