我需要查看 2013 年和 2014 年有多少客户在场
以下是我使用的查询:
proc sql;
select count(distinct a.CUSTOMER_NUMBER)
from LOCFIL.CUST_DB_2013 as a
inner join LOCFIL.CUST_DB_2014 as b
on a.CUSTOMER_NUMBER = B.CUSTOMER_NUMBER
;quit;
这给了我这两年的客户数量
但我需要 1) 仅限 2013 年的客户,并持续到 2014 年 2) 仅限 2014 年且 2013 年也出席过的客户
为此我尝试了以下方法:
1)
proc sql;
select count(distinct a.CUSTOMER_NUMBER)
from LOCFIL.CUST_DB_2013 as a
left join LOCFIL.CUST_DB_2014 as b
on a.CUSTOMER_NUMBER = B.CUSTOMER_NUMBER
;quit;
2)
proc sql;
select count(distinct a.CUSTOMER_NUMBER)
from LOCFIL.CUST_DB_2014 as a
left join LOCFIL.CUST_DB_2013 as b
on a.CUSTOMER_NUMBER = B.CUSTOMER_NUMBER
;quit;
但是数字甚至不接近(左连接查询计数比内部连接的计数多,这让我担心)。 您能帮助我如何获得这些号码吗?
最佳答案
如果有人需要在两年内都在场,请使用内部加入
:
proc sql;
select count(distinct a.CUSTOMER_NUMBER)
from LOCFIL.CUST_DB_2013 as a join
LOCFIL.CUST_DB_2014 as b
on a.CUSTOMER_NUMBER = B.CUSTOMER_NUMBER;
quit;
如果每年没有重复的客户,则只需使用 count(*)
。
关于sql - 使用连接条件单独从各个表中检索不同计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33242082/