gpt4 book ai didi

sql - 检测超出日期间隔的重复项

转载 作者:搜寻专家 更新时间:2023-10-30 20:12:20 25 4
gpt4 key购买 nike

我在 SO 中搜索但找不到直接答案。

有患者、医院、医疗分支机构(急诊科、泌尿科、骨科、内科等)、医疗操作代码(检查、外科手术、MRI、超声或其他)和患者就诊日期。

患者就诊,医生开药,要求再来做对照检查。如果患者在10 天后返回,他(她)必须向同一家医院支付另一次检查费用。医院可能会在10天后指定一个日期,并告知在接下来的10天内没有空位,以收取检查费。

表结构如下:

Patient id.no   Hospital    Medical Branch     Medical Op. Code      Date
1 H1 M0 P1 01/05/2011
5 H1 M1 P9 03/05/2011
3 H2 M0 P2 09/05/2011
1 H1 M0 P1 14/05/2011
3 H1 M0 P2 20/05/2011
5 H1 M2 P9 25/05/2011
1 H1 M0 P3 26/05/2011

在这里,探访病人没有。 3 号和 5 号病人不构成问题。 3 访问不同的医院,5 号患者访问不同的医疗分支机构。即使他们在 10 天内访问,他们也会支付考试费用。

然而,1 号患者在 01/05 和 14/05 就诊于同一家医院,同一家分店,并接受相同的流程(P1:检查)。

26/05 不算,因为它不是体检。

我要标记的是同一患者、同一医院、同一分支机构和同一医疗操作代码(具体体检:P1),日期范围超过 10 天。

结果表的格式:

HOSPITAL        TOTAL NUM. of PATIENTS      NUM. of PATIENTS OUT OF DATE RANGE
H1 x a
H2 y b
H3 z c

谢谢。

最佳答案

再一次,它是救援的分析功能。

此查询使用 LAG() 函数将 YOUR_TABLE 中的记录与表中先前(由 DATE 定义)匹配的记录(由 PATIENT_ID 定义)链接起来。

select hospital_id
, count(*) as total_num_of_patients
, sum (out_of_range) as num_of_patients_out_of_range
from (
select patient_id
, hospital_id
, case
when hospital_id_1 = hospital_id_0
and visit_1 > visit_0 + 10
and med_op_code_1 = med_op_code_0
then 1
else 0
end as out_of_range
from (
select patient_id
, hospital_id as hospital_id_1
, date as visit_1
, med_op_code as med_op_code_1
, lag (date) over (partition by patient_id order by date) as visit_0
, lag (hopital_id) over (partition by patient_id order by date) as hopital_id_0
, lag (med_op_code) over (partition by patient_id order by date) as med_op_code_0
from your_table
where med_op_code = 'P1'
)
)
group by hospital_id
/

注意:我没有测试过这段代码,因此它可能包含语法错误。下次我可以访问 Oracle 数据库时,我会检查它。

关于sql - 检测超出日期间隔的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7181783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com