常見的聚合函數


#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



 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM