Как получить разные значения из двух разных таблиц одновременно при выравнивании строк - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть две отдельные таблицы: emr и treatment. Каждая таблица имеет столбец userID и столбец provider. В настоящее время я делаю простое извлечение, чтобы подсчитать количество различных userID s, которые появляются в таблице 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 s, которые также появляются в таблице treatment, чтобы я мог видеть, сколько userID имеют запись 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)

Но это работает неправильно. Есть ли способ сделать это как объединение, или мне нужно заранее объединить две таблицы вместе? Или, может быть, есть более чистый способ, чем любой из этих вариантов?

1 Ответ

0 голосов
/ 08 ноября 2019

Использование 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;

(я изменил написание "vendor".)

Это будет включать поставщиков только в обеих таблицах. Если вы хотите, чтобы поставщики отсутствовали в одной из таблиц, вам нужно какое-то внешнее объединение. Ваш вопрос по этому вопросу не ясен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...