oracle 中sum和count的區別
往往初學者會錯誤地認為在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
相關推薦
oracle 中sum和count的區別
例1:查詢出現過2次的name。 往往初學者會錯誤地認為在where 語句裡直接使用count()演算法,很顯然這個想法是錯誤的,count()方法並不能被用在where子句中,為了解決問題,我們可以在group by子句後面使用HAVING來做條件限制。 錯誤做法:select * from aaa
實際中來總結sql裡面 sum 和 count區別
用通俗的實際例子來說明問題 count()是算行數的,sum是求和的 比如說表mm: 小明 小紅 語文 50 80 數學 60 70 英語 70 90 如果算小明學了
資料庫中sum和count的區別
sum()函式和count()函式的區別: 1)求和用累加sum(),求行的個數用累計count() 2)資料庫中對空值的處理:sum()不計算,count()認為沒有此項; 示例: SUM是對符合條件的記錄的數值列求和 COUNT 是對查詢中符合條件的結果
oracle中distinct和count函式組合使用
oracle中的distinct關鍵字和count函式需要經常組合起來使用 例如,如果我們拿到一個僅有員工基本資訊的列表,我們希望得到這個公司共有多少個部門。 我們可以這樣做: select count(a.deptno) from (select distinct deptno
ORACLE 中IN和EXISTS區別
http://trailblizer.blog.163.com/blog/static/59630364201024101539938/ in 是把外表和內表作hash join,而exists是對外表作loop,每次loop再對內表進行查詢。 一直以來認為exi
oracle中delect和truncate區別
delete和truncate table的區別:delete效能好於truncate delete是DML,truncate是DDL (DML可以rollback,DDL不可以) delete
ORACLE中NVLl和COALESCE的區別
oracl 第一個 ssi 必須 如果 不一致 miss 兩個 oal nvl(COMMISSION_PCT,0)如果第一個參數為null,則返回第二個參數如果第一個參數為非null,則返回第一個參數 COALESCE(EXPR1,EXPR2,EXPR3...EXPRn)從
ORACLE中SID和SERVICE_NAME的區別
spring 好的 java應用程序 系列 sdn 文件 數據 jdbc 修改 先來講一個小故事,2015年6月份,有個客戶遷移了數據庫,由單實例數據庫變成了RAC。JAVA應用程序出現了無法連接數據庫的情況,但是PL/SQL能連接上數據庫。由於項目比較龐大,
Oracle中sys和system使用者的區別
Oracle中sys和system使用者的區別 1.資料庫的啟動需要以SYSDBA/SYSOPER身份登入。 2.如果在同一主機上使用IPC連線到資料庫使用作業系統授權,登入任何一個使用者都可以擁有as sysdba和as sysoper。 3.sys和system使用
oracle中union和union all區別與效能分析
[ 概要 ] 經常寫sql的同學可能會用到union和union all這兩個關鍵詞, 可能你知道使用它們可以將兩個查詢的結果集進行合併, 那麼二者有什麼區別呢? 下面我們就簡單的分析下.
Oracle中Catalog和nocatalog的區別
nocatalog方式:用control file作為catalog,每一次備份都要往控制檔案裡面寫好多備份資訊,控制檔案裡面會有越來越多的備份資訊,即RMAN的備份資訊寫在本地控制檔案裡面。 catalog方式:必須要首先要建立目錄備份資料庫(catalog,也稱知識庫),建立恢復目錄,即資料庫的
oracle中distinct和group by的區別
其實二者沒有什麼可比性,但是對於不包含聚集函式的GROUP BY操作來說,和DISTINCT操作是等價的。不過雖然二者的結果是一樣的,但是二者的執行計劃並不相同。 在Oracle9i中: SQL> SELECT * FROM V$VERSION; BANNER -------
Oracle中 UNION和UINON ALL的區別,IS和AS的區別(簡單介紹,以後逐漸詳細)
UNION :去重,自動排序 UNION ALL :資料不去充,不自動排序 但實際上,我在公工作中還是UNION ALL使用頻率高 ORACLE中IS 和AS在儲
對比Oracle中truncate和delete的區別及效能
可見delete刪除表還可以回滾,而truncate截斷表就不能回滾了.(前提是delete操作沒有提交) 2.高水線 所有的Oracle表都有一個容納資料的上限(很象一個水庫歷史最高的水位),我們把這個上限稱為“high water mark”或HWM。這個HWM是一個標記(專門有一個數據塊用來記錄高水標記
oracle中in和exists的區別
一直以來,大家認為exists比in速度快,其實是不準確的。且看接下來的具體分析:in其實是將外表和內表進行hash join,exists是先對外表進行loop操作,然後每次loop後再對內表進行查詢。 如果兩張表大小差不多,那麼exi
使用SQL語句統計資料時sum和count函式中使用if判斷條件
首先舉個栗子(不想看的話直接下面看總結): order_type:訂單型別 open_id:使用者唯一標識 SELECT date(create_time) AS '當天日期', sum(real_price) AS '當天總收入',
sql(join中on與where區別) / NVL函式 / oracle儲存過程中is和as區別 / JAVA呼叫資料庫儲存過程
left join :左連線,返回左表中所有的記錄以及右表中連線欄位相等的記錄。 right join :右連線,返回右表中所有的記錄以及左表中連線欄位相等的記錄。 inner join: 內連線,又叫等值連線,只返回兩個表中連線欄位相等的行。 full join:外連線,返回兩個表中的行:left jo
Oracle中sum函式和case when聯合使用,報“ORA-00923: 未找到要求的 FROM 關鍵字”錯誤
在做行轉列的時候,一直報“ORA-00923: 未找到要求的 FROM 關鍵字”,找了好久的錯,現記錄下來以便以後檢視。需求是這樣的:按系(系名)分段統計(成績小於 60 分,60-85 分, 85 分以上)“大學物理”課程各分數段的學生人數,及各系學生的平均成績。附上出錯時
SQL語句中sum與count的區別
表fruitid name price1 apple 1.002 pear 4.00select count(price) from fruit; ----執行之後結果為:2 (表示有2條記錄)select sum(price) from fruit;--
Oracle中varchar2和varchar有什麼區別
1.varchar2是oracle提供的獨特的資料型別 oracle保證在任何版本中該資料型別向上和向下相容 但不保證varchar,這是因為varchar是標準sql提供的資料型別 有可能隨著sql標準的變化而改變。2.char對於不夠位數的用空格添補,而varchar和v