如何在对齐行中一次从两个不同的表中提取不同的计数

我有两个单独的表:emrtreatment。每个表都有一个userID列和一个provider列。目前,我正在做一个简单的拉动,以计算出现在userID表中的不同emr的数量,如下所示:

SELECT distinct vender,count (distinct userID) AS EMR_Patients
from emr
group by 1

这将为我提供以下输出:

vender | EMR_Patients
+++++++++++++++++++++
a        10,000
b         5,000
c        37,500

但是,我想包括也出现在userID表中的treatment数,这样我就可以看到有userID个具有emr记录并且还具有感兴趣的治疗。我想要得到的输出是:

vender | EMR_Patients| Treatment_Patients
+++++++++++++++++++++++++++++++++++++++++
a        10,000         4,000         3,500         9,000

我尝试使用工会:

SELECT distinct vender,count (distinct userID) AS EMR_Patients
    FROM emr
    GROUP BY 1
UNION ALL
(SELECT distinct vender,count (distinct userID) AS Treatment_Patients
    FROM treatment
    GROUP BY 1)

但这不能正常工作。有没有办法做到这一点,或者我应该事先将两个表合并在一起?还是有比这两种方法更清洁的方法?

afe301 回答:如何在对齐行中一次从两个不同的表中提取不同的计数

使用JOIN

SELECT e.vendor,e.EMR_Patients,t.Treatment_Patients
FROM (SELECT vendor,count(distinct userID) AS EMR_Patients
      FROM emr
      GROUP BY 1
     ) e
     (SELECT vendor,count(distinct userID) AS Treatment_Patients
      FROM treatment
      GROUP BY 1
     ) t
     ON e.vendor = t.vendor;

(我调整了“供应商”的拼写。)

这将仅在两个表中都包括供应商。如果要使某个表中缺少的供应商,则需要某种外部联接。您的问题不清楚。

本文链接:https://www.f2er.com/3141502.html

大家都在问