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

Sql 如何在对齐行时同时从两个不同的表中提取不同的计数,sql,apache-spark,Sql,Apache Spark,我有两个单独的表格:emr和treatment。每个表都有一个userID列和一个provider列。目前,我正在做一个简单的拉动操作,以计算出现在emr表中的不同userIDs的数量,如下所示: SELECT distinct vender, count (distinct userID) AS EMR_Patients from emr group by 1 这将获得以下输出: vender | EMR_Patients +++++++++++++++++++++ a 10,

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

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
但是,我想包括
治疗
表中也出现的
用户ID
的数量,这样我就可以看到有多少
用户ID
有emr记录,也有感兴趣的治疗。我试图得到的结果是:

vender | EMR_Patients| Treatment_Patients
+++++++++++++++++++++++++++++++++++++++++
a        10,000         4,000
b         5,000         3,000
c        37,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)
但这并不正确。作为一个联合体,有没有办法做到这一点,或者我应该事先将两个表连接在一起?或者有比这两个选项更干净的方法吗?

使用
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;
(我调整了“供应商”的拼写。)

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