本节学习聚合函数

聚合函数

输入一列,输出一行
汇总数据,输出到一行里
会跳过NULL值

一、聚合函数类型

计数函数COUNT

COUNT(*)
COUNT(1)
COUNT([列名])
COUNT(DISTINCT [列名])

尽量不要在一个语句中写多个COUNT
image.png

求和函数SUM([指定列名])

均值函数AVG([指定列名])image.png

最大值函数MAX([列名])

最小值函数MIN([列名])

image.png

函数用法:
SELECT 函数(参数)FROM ;

空值处理

SUM(col)在处理空值时会直接跳过,而普通的四则运算会将空值直接记为NULL。所以在用SUM进行两列数值间的运算时,如果有一列存在空值,直接计算会发生错误,需要对该列进行空值处理(IFNULL)
COUNT(col)也不会记录空值
image.png
均值函数AVG:
image.png

可以过滤出部分行,进行对应的聚合函数计算
image.png
一行代码中可以出现多个聚合函数
image.png
如果想要同时展示出来net_w为100g和150g时的sale_price怎么办?
image.png
需要用到GROUP BY

二、分组数据GROUP BY

按照【聚合键】进行分组,分好组后在各组中使用聚合函数
SELECT中要展示聚合键、也要使用聚合函数;WHERE过滤出【聚合键】中想要的数据,GROUP BY按照聚合键进行分组

SELECT 聚合键【指定列】,聚合函数 FROM… WHERE 过滤出需要的数据 GROUP BY 聚合键【指定列】

image.png

用法举例:

image.png
练习:
句3可以达到句1+句2的效果
image.png
image.pngimage.pngimage.png
如果想再对聚合的结果进行筛选呢?比如SUM(sale_price)>30 ?

三、分组过滤HAVING

WHERE对聚合键进行过滤(想要的“行”),HAVING对聚合结果进行过滤(想要的“组”)

image.png
注意WHERE和HAVING在使用上的区别
image.png
image.png

感觉理解上没什么问题~注意练习~可以用prod_info表进行练习

四、单表查询总结

到这里单表查询就全部学完啦,这里对所有语句结构进行总结
image.png

注意练习~