我在尝试定义此表的 SQL 查询时遇到问题:
有一张患者表及其访问时记录的体重读数,其中包含以下列:
换句话说,如果两个记录中的两个访问 ID 相同,则在同一访问日期获取了两个体重读数。
我有这样的查询“让所有患者的体重读数至少有两个高于 150”:
select patient_id
from patients
where weight_val > 50
group by patient_id
having count(*) >= 2
这是我的问题:如果我想修改此查询以便可以查询以下内容该怎么办:
- “让所有患者在不同的就诊中至少两次体重读数高于 150”
- “让所有患者在同一次就诊中至少有两次体重读数高于 150”
是否可以在不删除“group by”语句的情况下做到这一点?如果没有,您推荐的方法是什么?如果更容易的话,我也愿意添加日期列而不是访问 ID(我正在使用 Oracle)。
至少两次体重读数高于 150 的患者不同的 visits
Use:
SELECT p.patient_id
FROM PATIENTS p
WHERE p.weight_val > 150
GROUP BY p.patient_id
HAVING COUNT(DISTINCT p.visit_id) >= 2
至少两次体重读数高于 150 的患者the same visit
Use:
SELECT DISTINCT p.patient_id
FROM PATIENTS p
WHERE p.weight_val > 150
GROUP BY p.patient_id, p.visit_id
HAVING COUNT(*) >= 2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)