题解 | 医院门诊复诊率与抗生素用药占比统计

医院门诊复诊率与抗生素用药占比统计

https://www.nowcoder.com/practice/7adcef0b1fb741fbba255870422cdb43

with a1 as (
    select 
    visit_id,
    dept,
    patient_id,
    datediff(visit_date,(lag(visit_date) over(partition by dept,patient_id order by visit_date))) as u
    # 如果用LEAD,在后面链接表的时候,上次就诊记录在2024-02之前的记录会被where date_format(visit_date,'%Y-%m')='2024-02' 给过滤掉
    from visits
)

select
v.dept,
count(distinct v.visit_id) as feb_2024_visits,
count(distinct v.patient_id) as feb_2024_unique_patients,
round(100*count(distinct u)/count(distinct v.visit_id),2) as feb_2024_revisit_rate,
#用distinct u 而不用sum(case when u <=30 then 1 else 0 end),因为如果一条visit_id有两条处方记录,可能会使该visit_id产生两个<=30的记录从而多算分子。但其实distinct u 也不保险,如果有两个visit_id的u正好一样,会被压缩成一条记录,从而少算分子
ifnull(round(100*sum(is_antibiotic)/count(prescription_id),2) ,0.00) as feb_2024_antibiotic_rate
from visits v 
left join prescriptions using(visit_id)
join patients using(patient_id)
left join a1 on v.visit_id=a1.visit_id and u <=30
where date_format(visit_date,'%Y-%m')='2024-02' 
group by v.dept
order by v.dept 

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务