如何在sql(databricks)中选择id,其中至少有两个列表项

pgccezyw  于 2021-07-12  发布在  Spark
关注(0)|答案(1)|浏览(157)

我正在azuredatabricks中处理患者级别的数据,并尝试从特定诊断代码列表中构建至少有2个诊断的患者队列。这基本上就是表格的样子:

CLAIM_ID | PTNT_ID | ICD_CD | DATE
---------+---------+--------+------------
1           101      2500     01_25_2020
2           101      3850     03_13_2018  
3           222      2500     10_26_2018
4           222      8888     11_30_2018
5           222      9155     04_01_2019
6           871      2500     02_17_2020
7           871      3200     09_09_2019

名单 ICD_CD 感兴趣的代码类似于[2500、3850、8888]。在这种情况下,我想返回total unique ptnt\u id=2。这些应该是 PTNT_ID =(101,222)因为只有这两个病人至少有两个 ICD_CD 兴趣代码。
当我使用这样的东西时,我能够返回所有相关的 PTNT_ID 值,但我无法得到这些值的总数 PTNT_ID :

select mc.PTNT_ID
from MEDICAL_CLAIMS mc
where mc.PTNT_ID in ( # list of ICD_CD of interest
)
group by mc.PTNT_ID
having count(distinct mc.PTNT) >= 2

当我尝试在中添加count语句时,它返回一个错误

yiytaume

yiytaume1#

只需从查询中选择:

select count(*)
from
(
  select mc.PTNT_ID
  from MEDICAL_CLAIMS mc
  where mc.PTNT_ID in ( # list of ICD_CD of interest )
  group by mc.PTNT_ID
  having count(distinct mc.PTNT) >= 2
) ptnts;

相关问题