почему функция proc sql sum возвращает количество вместо общих значений? - PullRequest
0 голосов
/ 25 апреля 2019

Я изучаю proc sql в SAS.Когда я использую функцию 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

Ответы [ 2 ]

2 голосов
/ 25 апреля 2019
proc sql;
select sum(target)
from apple
where target ge 3;
quit;

Я полагаю, что то, что делал ваш код, оценивает (target gt 3) как логическое выражение, так как в SAS TRUE = 1 и FALSE = 0 функция sum добавляла 0,0,1,1.

1 голос
/ 25 апреля 2019

Решение от Крейга на самом деле лучше, но с случаем, когда еще кончается , вы можете делать то, что пытались.

proc sql;
select sum(case when target ge 3 then target else 0 end)
from apple;
quit;
...