我在SAS学习proc sql。当我使用sql sum函数时,我意识到如果添加了一个比较运算符,则输出是行数而不是垂直和。如何获得垂直总和以及所述求和背后的机制是什么?
data apple;
input target;
cards;
0
1
3
5
;
run;
proc sql;
select sum(target ge 3)
from apple;
quit;
预期结果将是3 + 5 = 8;
实际结果是2
proc sql;
select sum(target)
from apple
where target ge 3;
quit;
我相信你的代码正在做的是评估(目标gt 3)作为布尔表达式,因此在SAS TRUE = 1和FALSE = 0时,sum函数添加了0,0,1,1。
Craig的解决方案实际上更好,但是如果有其他情况,你可以做你尝试过的事情。
proc sql;
select sum(case when target ge 3 then target else 0 end)
from apple;
quit;