Having是一個經常與聚合函數搭配使用的關鍵字。它的作用是篩選滿足條件的組,即在分組之後過濾數據,條件中經常包含聚合函數
什麼是聚合函數?聚合函數一般會出現在哪?
顧名思義,聚合函數就是按照某種規則將特定字段進行規約,常見的聚合函數如:
(1)求個數:count
(2)求總和:sum
(3)求最大值:max
(4)求最小值:min
(5)求平均值:avg
在諸多應用中,聚合函數更多的輔助group by使用,而不能放到where子句中。(注:要牢記,where的作用對象只是“行”,只是用來過濾數據作爲條件使用)
聚合函數只能在以下位置作爲表達式使用:
(1)select語句的選擇列表(子查詢或外部查詢)
(2)compute或compute by 子句
(3)having子句
其他:
1.having只能放在group by 之後
2.group by後只能放非聚合函數的列
3.“Where”是一個約束聲明,處在較早位置執行,先執行Where約束,再返回查詢結果,且Where中不能使用聚合函數。
“having”是一個過濾聲明,通常在查詢處理末段,較靠後執行,主要用來對經過前面各種約束後查詢到的數據結果進行過濾,可以使用聚合函數。