我有一个健康结果数据库,我希望能够在该数据库中查询在特定日期范围内符合特定诊断字符串的受试者的计数。虚拟数据(my_table
)看起来像这样(Date
作为时间戳):
subjid Diagnosis Date
----------------------------------------
Subj001 Z12345 2019-02-05 00:00:00
Subj001 Z12345 2017-01-10 00:00:00
Subj002 Z12345 2018-08-14 00:00:00
Subj002 Z12345 2014-03-20 00:00:00
Subj002 Z12345 2013-07-23 00:00:00
Subj003 Y56789 2016-08-16 00:00:00
子主题中的每个主题可以有多个条目,每个条目都有相应的诊断代码。到目前为止,我的查询看起来像:
select
subjid, Diagnosis, Date,
count(subjid) over (partition by Diagnosis) as count
from
my_table
where
Diagnosis in ('Z12345')
and diag_date >= '2014-01-01 00:00:00'
但是,问题是我不能在计数中包括一个不同的语句,因为这会返回错误。我要寻找的是在特定日期后满足诊断代码字符串的唯一主题的数量;我对每个患者的诊断代码字符串出现多少次感兴趣[]。 问题:
我有一个健康结果数据库,我希望能够在该数据库中查询在特定日期范围内符合特定诊断字符串的受试者的计数。虚拟数据(my_table)看起来像这样(...
dense_rank()
s之和:select subjid, Diagnosis, Date,
(dense_rank() over (partition by diagnosis order by subjid asc) +
dense_rank() over (partition by diagnosis order by subjid desc)
) as num_subjids
from my_table
where Diagnosis in ('Z12345') and
diag_date >= '2014-01-01 00:00:00';