MySQL必知必会:第十二到第十三章《精华合集》

本文详细介绍了SQL中的聚集函数,如AVG、COUNT、MAX/MIN和SUM的用法,并讨论了它们与DISTINCT的结合。还探讨了GROUP BY和HAVING子句在数据分组和过滤中的作用,强调了在分组查询中使用聚集函数的重要性。

聚集函数

AVG

select AVG(id) as aaa from AAA where bbb <> 3;
where语句中可以使用非检索列
AVG函数只能平均一列,且自动忽略null值

COUNT

select count(*) from AAA;    --对所有行进行计数
select count(id) from AAA;   --对该列计数,忽略Null值

MAX/MIN

select max(column) from AAA;   --返回最大值,自动忽略NULL
支持文档最大,文本数据如果按照文本排序,Max返回最后一行
min与Max完全相反

SUM

select sum(aaa) from AAA;         --取和,忽略Null
select sum(aaa * bbb) from AAA;   --算数取和,忽略Null

与DISTINCT连用

select AVG(distinct aaa) from AAA;           --对不同aaa平均
select count(distinct id) from AAA;
select count(distinct *) from AAA;           --错误写法

聚集函数组合使用

select avg(id),sum(id),max(id),min(id) from AAA;

分组数据

两个子句

group by 和 having都是select语句的两个子句

为什么分组

分组是为了更好的聚集计算
在使用分组之前聚集函数的粒度是整表或者where条件圈定的范围,使用个分组之后,group by会对where圈定的范围再度分组,这样聚集函数的粒度就变成了组,也就是在组内生效,聚集函数在分组情况下是对组内数据的聚集,而不是整表的。

分组必知

1、分组group by可以根据多列进行分组
2、分组是对分组后的数据进行汇总!所以分组汇总后只有一列
3、group by后边只能有检索列和计算字段不能有聚集函数
4、除了聚集函数所有的select列必须在group by子句中给出
5、分组列中有null值,作为一个分组返回,多行的话,多行作为一个分组
7、group by写在where子句之后,order by子句之前。

with rollup在分组之后的统计数据上再度统计,多出来一条数据。

HAVING

having与where类似,having对分组进行过滤,where对列进行过滤,having可以使用where一切运算符,where过滤在having之前。

select * from AA where group by having order by limit;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

练拳百万陈平安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值