在SQL 中,你可以在GROUP BY之後使用HAVING關鍵字根據指定條件查詢資料庫。
與其他關鍵字一樣,它會傳回滿足條件的資料並過濾掉其餘的資料。
引入HAVING關鍵字是因為WHERE子句無法與聚合函數一起使用。
因此,你必須將HAVING子句與聚合函數一起使用,而不是WHERE。
having是分組(group by)後的篩選條件,分組後的資料組內再篩選
where則是在分組前篩選
通過使用GROUP BY 子句,可以讓SUM 和 COUNT 這些函式對屬於一組的資料起作用。
當你指定 GROUP BY region 時, 屬於同一個region(地區)的一組資料將只能返回一行值.
也就是說,表中所有除region(地區)外的欄位,只能通過 SUM, COUNT等聚合函式運算後返回一個值.
HAVING子句可以讓我們篩選成組後的各組資料.
WHERE子句在聚合前先篩選記錄.也就是說作用在GROUP BY 子句和HAVING子句前.
而 HAVING子句在聚合後對組記錄進行篩選。
SQL語法常用的聚合函數
COUNT()函數來計算指定欄位的數量
AVG()可以計算指定欄位資料的平均值
MAX()可以計算欄位資料的最大值。
MIN()可以計算欄位資料的最小值
SUM()可以計算欄位資料的總和。
GROUP BY可以把資料分類,例如我們之前在使用SUM()時,只能計算全部資料的SUM(),或是用WHERE來限制資料,
但有GROUP BY後,我們可以指定SUM()的資料要GROUP BY類別。
HAVING就是GROUP BY的WHERE,
HAVING可以過濾GROUP BY以後的資料,