问题描述
在 不同的 访问中至少有两个体重读数高于150的患者
使用:
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的患者
使用:
SELECT disTINCT p.patient_id
FROM PATIENTS p
WHERE p.weight_val > 150
GROUP BY p.patient_id, p.visit_id
HAVING COUNT(*) >= 2
解决方法
我在尝试为此表定义SQL查询时遇到了麻烦:
有一张患者表格,其访问时记录的体重读数包括以下几列:
- 患者编号
- 体重读数
- 访问ID(每次访问一个)
换句话说,如果在两个记录中两个访问ID相同,则在相同的访问日期读取了两个权重。
我有这个查询来“让所有至少有两个体重读数高于150的患者”:
select patient_id
from patients
where weight_val > 50
group by patient_id
having count(*) >= 2
这是我的问题:如果我想修改此查询以便查询以下内容,该怎么办:
- “让所有患者在不同的访问中至少有两个体重读数大于150的患者”
- “让所有患者在同一次访问中至少有两个体重读数高于150的患者”
是否可以在不删除“ group
by”语句的情况下做到这一点?如果没有,您推荐的方法是什么?如果愿意,我也愿意添加日期列而不是访问ID(我正在使用Oracle)。