常见的聚合函数

#1、常见的几个聚合函数

AVG 平均值

SUM 求和   

MAX 最大值

MIN 最小值

* 以上聚合函数自动过滤空值

 

 

方差,标准差,中位数

count()

1,作用 计算指定字段在查询结构中出现的个数

count(1)
count(字段)
count*

注意:计算指定字段出现的个数时,是不计算null值的

那么用哪个效率更高,如果是myinsam存储引擎,则三者效率相同,都是o1
          如果是innoDB 则三者效率 count(*) = count(1)>count(字段)

#2、group by 的使用

分组操作
select 中出现的非组合函数的字段,必须声明在GROUP BY 中
反之 ,GROUP BY 中声明的字段可以不出现在select 中

#在GROUP BY中 使用 with rollup 把所有的都计算出来,计算整体的平均。谨慎和 order by 使用 会相互矛盾

#HAVING 的使用

要求1、如果过滤条件中使用了 聚合函数,则必须使用having 来替换where ,否则报错
要求2、having 必须声明在group by 的后面
要求3、如果没有用group by 可以不用having,开发中一般都是配合使用

结论:当过滤条件中有聚合函数时。则此时过滤条件必须声明在having中
   当过滤条件中没有聚合函数时,则此过滤条件声明在where中或者having中都可以,但是,建议声明在where中(效率高,范围广)

#sql底层执行原理

语句的完整结构
#sql92语法
select ,,,。,,,。(存在聚合函数)
from ,,,。,,,
where 多表链接条件 and 不包含聚合函数的过滤条件
group by ,,,
having 包含聚合函数的过滤条件
order by ,,, desc/asc
limit,,,/,,,


#sql99语法
select ,,,。,,,。(存在聚合函数)
from ,,,join,,,on
where 不包含聚合函数的过滤条件
group by ,,,
having 包含聚合函数的过滤条件
order by ,,, desc/asc
limit,,,/,,,

sql执行过程:
  

 

 #from ,,,,.,,,-> on --> (left right join) --> where -->group by --> having --> select --> distinct -->  order by --> limit



 

posted @ 2021-11-30 09:59  我是深水的猫  阅读(1575)  评论(0)    收藏  举报