聚合函數是比較where、having 的關鍵。
開門見山。where、聚合函數、having 在from後面的執行順序:sql
where>聚合函數(sum,min,max,avg,count)>having函數
列出group by來比較兩者。()因where和having 在使用group by時問的最多)
若須引入聚合函數來對group by 結果進行過濾 則只能用having。(此處很少說,本身想 是先執行聚合函數仍是先過濾 而後比對我上面列出的執行順序 一看便知)spa
select sum(score) from student where sex='man' group by name having sum(score)>210
注意事項 :
一、where 後不能跟聚合函數,由於where執行順序大於聚合函數。
二、where 子句的做用是在對查詢結果進行分組前,將不符合where條件的行去掉,即在分組以前過濾數據,條件中不能包含聚組函數,使用where條件顯示特定的行。
三、having 子句的做用是篩選知足條件的組,即在分組以後過濾數據,條件中常常包含聚組函數,使用having 條件顯示特定的組,也能夠使用多個分組標準進行分組。
code