我试图确定出现在所有 3 个“触摸”中并打开(打开 = 1)所有 3 封电子邮件的人数(基于 ID)。我正在使用下面的代码,但它返回一个我认为不正确的值 0。所以,我不确定我是否在数据中正确地表示了这一点。
proc sql;
select count (ID)
from TableX
where (Touch='Touch1' and Open=1) and (Touch='Touch2' and Open=1) and (Touch='Touch3' and Open=1);
quit;
Run Code Online (Sandbox Code Playgroud)
谢谢!
您可以使用以下方法识别人员:
proc sql;
select id
from TableX
where Open = 1 and Touch in ('Touch1', 'Touch2', 'Touch3')
group by id
having count(distinct Touch) = 3;
quit;
Run Code Online (Sandbox Code Playgroud)
要计算它们,请使用子查询:
proc sql;
select count(*)
from (select id
from TableX
where Open = 1 and Touch in ('Touch1', 'Touch2', 'Touch3')
group by id
having count(distinct Touch) = 3
) x
quit;
Run Code Online (Sandbox Code Playgroud)