最近在db2 v9.5上遇到了一些彙總值的計算,發現了乙個怪問題,以記錄之。。
建立臨時表
create table test
( id varchar(1),
type varchar(1),
num int
)
插入臨時資料
insert into test values('1','1',20);
insert into test values('1','2',80);
insert into test values('2','2',50);
查詢時
select id,sum(num),sum(case when type='1' then num else 0 end ),
sum(num)+sum(case when type='1' then num else 0 end ),
sum(case when type='1' then num else 0 end )/sum(num),sum(num)/sum(num)
from test
group by id
結果如下
id 2 3 4 5 6
----- ---- ---- ---- ---- ---
1 100 20 120 0 1
2 50 0 50 0 1
可以看到,sum值是正確的,兩個值相加sum(num)+sum(case when type='1' then num else 0 end ) 也是正確的,但是在計算sum(case when type='1' then num else 0 end ) /sum(num) 卻是錯誤的,第乙個應該是0.2 第二個是0。計算sum(num)/sum(num)卻是正確的。。
原因沒有想到,於是在oralce 10.2.0環境下,再做測試,以上db2指令碼在oracle環境下皆可執行。
oracle 下結果卻是正確的
id 2 3 4 5 6
----- ---- ---- ---- ---- ---
1100 20 120 0.2 1
2 50 0 50 0 1
oracle 和db2 sum 運算邏輯有啥區別呢?
google 下沒有答案,有沒有高手能**一下呢?
關於DB2的使用(DB2資料命令)
公司所用的資料庫有金倉和db2 首先要用命令視窗直接開啟db2需要在cmd中輸入 db2cmd 1 啟動db2資料庫 db2start 2 連線資料庫 db2 connect to 資料庫名稱 3 建立資料庫 db2 create db 資料庫名稱 4 刪除資料庫 db2 drop db 資料庫名稱...
常用的DB2命令(2)
catalog資料庫 catalog indirect db2 catalog database on db2sys dir name catalog remote db2 catalog database as at node 事例 db2 catalog tcpip node nodesun r...
常用的DB2命令(2)
catalog資料庫 catalog indirect db2 catalog database on db2sys dir name catalog remote db2 catalog database as at node 事例 db2 catalog tcpip node nodesun r...