请求修正SQL查询:查找因同一主诊断多次入院的患者
问题排查与修正
原代码存在的问题
- 自连接未排除同一条入院记录的匹配:当
ad1和ad2指向同一条记录时,也会满足连接条件,导致统计结果虚高,甚至会把只入院一次的患者误判为多次。 GROUP BY与SELECT字段不匹配:仅按patient_id分组,但SELECT中包含primary_diagnosis,这在严格SQL模式下会报错,且逻辑上无法保证每个患者对应唯一的主诊断(患者可能有多个不同主诊断的多次入院)。- 冗余的
DISTINCT:自连接本身会产生大量重复行,后续的GROUP BY和DISTINCT组合使用逻辑混乱,无法准确过滤目标数据。
修正后的SQL代码
SELECT patient_id, primary_diagnosis FROM admissions GROUP BY patient_id, primary_diagnosis HAVING COUNT(*) > 1;
逻辑说明
- 直接按
patient_id和primary_diagnosis组合分组,确保每组代表同一患者的同一主诊断的所有入院记录。 - 使用
COUNT(*) > 1筛选出分组内记录数大于1的结果,即该患者因该主诊断多次入院的情况。 - 无需自连接,逻辑简洁高效,避免了重复行和统计错误。
内容的提问来源于stack exchange,提问作者Proloy Chatterjee
相关产品推荐
相关产品推荐

