語法:sql
group by 字段 having 條件判斷;函數
group by的用法我已經在上一篇經驗中介紹了it
仍是已員工績效表爲例class
咱們若是就是查詢每一個部門成績大於89的員工數,能夠這樣寫:基礎
SELECT dept,COUNT(user_name) FROM ec_uses WHERE score>89 GROUP BY dept;語法
對這個查詢的過程進行分析,實際上是:先查出績效成績大於89的員工記錄,而後再用count聚合函數統計部門的人數,也就是說where是在聚合以前篩選記錄的,那麼若是咱們要在聚合以後篩選記錄該如何處理呢?im
例如,在上面的基礎上再加一個條件,查詢部門人數大於1的部門統計
那麼咱們是先要統計出每一個部門的人數,也就是要用count聚合函數,而後再看哪些部門的人數是多於1人的經驗
也就是篩選條件是在聚合以後的,這時where已不能知足使用,咱們就須要用到having了數據
sql:
SELECT dept,COUNT(user_name) count_tmp FROM ec_uses GROUP BY dept HAVING count_tmp>1;
看執行結果
值得注意的是having後面跟的條件判斷的字段必須是聚合函數返回的結果,不然sql會報錯,例如:
SELECT dept,COUNT(user_name) count_tmp FROM ec_uses GROUP BY dept HAVING score>1;