程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> oracle sum count 的區別

oracle sum count 的區別

編輯:Oracle數據庫基礎
在開發時,我們經常會遇到以“累計(count)”或是“累加(sum)”為條件的查詢。比如aaa表:
ID,NAME,SHU
1,a,3
2,a,4
3,b,5
4,b,7
5,a,
6,a,20
 
 
 
  例1:查詢出現過2次的name。
  往往初學者會錯誤地認為在where 語句裡直接使用count()算法,很顯然這個想法是錯誤的,count()方法並不能被用在where子句中,為了解決問題,我們可以在group by子句後面使用HAVING來做條件限制。
  錯誤做法:select * from aaa where count(name)>=2 group by name;
  正確做法:select * from aaa group by name HAVING count(name)>=2 ;
  解釋說明:HAVING 與 WHERE 類似,可用來決定選擇哪些記錄。HAVING 子句在SELECT語句中指定,顯示哪些已用 GROUP BY 子句分組的記錄。在GROUP BY組合了記錄後, HAVING會顯示 GROUP BY 子句分組的任何符合 HAVING 子句的記錄。
 
  例2:查詢單一用戶的SHU總和大於10的用戶。
  有前面的經驗,把sum()方法寫在HAVING子句中。
  正確做法:select * from aaa group by name HAVING sum(SHU)>10 ;
 
  注意:一個HAVING子句最多只能包含40個表達式,HAVING子句的表達式之間可以用AND和OR分割。
   
    例3:sum 與count 的區別
        select name, count(shu), sum(shu)
            from aaa 
        group by name
 
       結果為:a      3     27
              b       2     12
       可見:Oracle 數據庫中對空值的事不同的,count 函數認為沒有此項,而sum函數不計算。
       結論: 求和用累加 sum ,求行的個數用累計 count
         
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved