SQL中以count及sum爲條件的查詢

  在開發時,咱們常常會遇到以「 累計(count)」或是「 累加(sum)」爲條件的查詢。好比user_num表:
id
user
num
1
a
3
2
a
4
3
b
5
4
b
7
 
  例1:查詢出現過2次的user。
  每每初學者會錯誤地認爲在where 語句裏直接使用count()算法,很顯然這個想法是錯誤的,count()方法並不能被用在where子句中,爲了解決問題,咱們能夠在group by子句後面使用HAVING來作條件限制。
  錯誤作法: select * from user_num where count(user)>=2 group by user;
  正確作法: select * from user_num group by user HAVING count(user)>=2 ;
  解釋說明:HAVING 與 WHERE 相似,可用來決定選擇哪些記錄。HAVING 子句在SELECT語句中指定,顯示哪些已用 GROUP BY 子句分組的記錄。在GROUP BY組合了記錄後, HAVING會顯示 GROUP BY 子句分組的任何符合 HAVING 子句的記錄。
 
  例2:查詢單一用戶的num總和大於10的用戶。
  有前面的經驗,把sum()方法寫在HAVING子句中。
  正確作法: select * from user_num group by user HAVING sum(num )>10 ;
 
   注意:一個HAVING子句最多隻能包含40個表達式,HAVING子句的表達式之間能夠用AND和OR分割。
相關文章
相關標籤/搜索