mysql中的用法 count group by having


  • 1

    語法:

    group by 字段 having 條件判斷;

    group by的用法我已經在上一篇經驗中介紹了

  • 2

    還是已員工績效表為例

     
  • 3

    我們如果就是查詢每個部門成績大於89的員工數,可以這樣寫:

    SELECT dept,COUNT(user_name) FROM ec_uses WHERE score>89 GROUP BY dept;

    對這個查詢的過程進行分析,其實是:先查出績效成績大於89的員工記錄,然后再用count聚合函數統計部門的人數,也就是說where是在聚合之前篩選記錄的,那么如果我們要在聚合之后篩選記錄該如何處理呢?

     
  • 4

    例如,在上面的基礎上再加一個條件,查詢部門人數大於1的部門

    那么我們是先要統計出每個部門的人數,也就是要用count聚合函數,然后再看哪些部門的人數是多於1人的

    也就是篩選條件是在聚合之后的,這時where已不能滿足使用,我們就需要用到having了

    sql:

    SELECT dept,COUNT(user_name) count_tmp FROM ec_uses GROUP BY dept HAVING count_tmp>1;

  • 5

    看執行結果

     
  • 6
    所以having子句對我們篩選分組后的數據非常方便
  • 7

    值得注意的是having后面跟的條件判斷的字段必須是聚合函數返回的結果,否則sql會報錯,例如:

    SELECT dept,COUNT(user_name) count_tmp FROM ec_uses GROUP BY dept HAVING score>1;

     
  •  


  • 免責聲明!

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



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