编写MySQL查询:判断患者30天内是否再入院(标记1/0)
MySQL查询:判断患者30天内是否再次入院
假设你的表名为admissions,以下两种方法均可实现需求:
方法一:使用EXISTS子查询
通过子查询检查同一患者是否存在满足时间条件的后续入院记录:
SELECT DISTINCT `Patient ID`, CASE WHEN EXISTS ( SELECT 1 FROM admissions b WHERE b.`Patient ID` = a.`Patient ID` AND b.`admission start` > a.`admission stop` AND DATEDIFF(b.`admission start`, a.`admission stop`) <= 30 ) THEN 1 ELSE 0 END AS `30天内是否再入院` FROM admissions a;
方法二:使用窗口函数LEAD
先获取每条入院记录的下一次入院时间,再分组判断是否存在30天内再入院的情况:
SELECT `Patient ID`, MAX(CASE WHEN next_admission_start IS NOT NULL AND DATEDIFF(next_admission_start, `admission stop`) <= 30 THEN 1 ELSE 0 END) AS `30天内是否再入院` FROM ( SELECT `Patient ID`, `admission start`, `admission stop`, LEAD(`admission start`) OVER (PARTITION BY `Patient ID` ORDER BY `admission start`) AS next_admission_start FROM admissions ) t GROUP BY `Patient ID`;
输出样例
| Patient ID | 30天内是否再入院 |
|---|---|
| r753432343 | 0 |
| y839243422 | 1 |
内容的提问来源于stack exchange,提问作者Manu Hand
相关产品推荐
相关产品推荐

