作者dofu1943 (那就念吧~~)
看板Statistics
标题[程式] sas proc sql
时间Fri Oct 19 22:18:05 2018
[软体程式类别]:
SAS
[程式问题]:
资料处理
[软体熟悉度]:
新手
[问题叙述]:
本来想要自己创资料来测试
但因为实际使用的资料量很大
我在想可能看不出差异
想请教一下版友
以下两种写法会否影响到加总的结果
[程式范例]:
第1种
PROC SQL ;
CREATE table B AS
SELECT year, sex ,yearlevel , sum(fee) as s_fee
, count ( distinct id ) as c_did
FROM A
where diftime<=11
GROUP BY year, sex ,yearlevel
order by year, sex ,yearlevel
;
QUIT ;
第2种
PROC SQL ;
CREATE table C AS
SELECT year, sex ,yearlevel , sum(fee) as s_fee
FROM A
where diftime<=11
GROUP BY year, sex ,yearlevel
order by year, sex ,yearlevel
;
QUIT ;
有的id在不同年度(year)会出现在2次
有的id则可能出现5次,出现的次数不完全相等
两种的写法差别只在於第1种有把count id的计算丢进去
原本只是因为懒得分两次计算id的笔数
所以才一起写进去
结果
第1种算出来的fee加总会略高於第2种
我不懂为什麽
也不知道哪个对
而且还有更奇怪的事情
就是
一开始先执行第2种程式,得到比较小的fee加总时
如果再执行第1种程式,得到比较大的fee加总後
此时再执行一次第2种程式的话
结果出来的fee加总会变成跟第1种一样,也就是比较大的fee加总
我知道很离奇
但真的不知道是发生什麽事
程式执行时也没有出现惊叹号和错误
不知道有没有版友遇过相同经验
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.228.53.140
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Statistics/M.1539958687.A.00C.html
※ 编辑: dofu1943 (36.228.53.140), 10/19/2018 22:19:30
※ 编辑: dofu1943 (36.228.53.140), 10/19/2018 22:22:32
1F:推 west1996: 看起来应该要是一样的答案才对,是每一组的fee都略高吗 10/19 23:44
2F:→ west1996: 还是特定某一组的fee略高?再仔细检查一下log档,应该有 10/19 23:45
3F:→ west1996: 什麽讯息没有注意到 10/19 23:45
4F:推 liton: 应该是原始数据的问题,检查看看id是不是有空值之类的问题 10/21 17:42