sql - 使用连接条件单独从各个表中检索不同计数

标签 sql sas

我需要查看 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/

相关文章:

sql - 在 SQL 查询中将结果集组合到数组中

sas - ChatGPT API 在 SAS 中集成时出错。无效的上下文类型 header

SAS 数据步骤计算图中的节点/边

sas - 如何在 SAS 中获取 PROC REPORT 以显示没有观察的 ACROSS 变量中的值?

python - 用 pandas 读取 SAS 文件

mysql - 包括用户评论过的帖子

sql - 计算每天两个日期时间字段之间的平均时差

mysql - 查询以使用键和至少一个好行为行填充缺失的非规范化列值?

sql - Rails : complex search on 3 models, 只返回最新的 - 如何做到这一点?

SAS:从文本字符串中提取用破折号分隔的 ID