微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL查询可同时获取分组依据和不同的值

如何解决SQL查询可同时获取分组依据和不同的值

不同的 访问中至少有两个体重读数高于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

这是我的问题:如果我想修改此查询以便查询以下内容,该怎么办:

  1. “让所有患者在不同的访问中至少有两个体重读数大于150的患者”
  2. “让所有患者在同一次访问中至少有两个体重读数高于150的患者”

是否可以在不删除“ group
by”语句的情况下做到这一点?如果没有,您推荐的方法是什么?如果愿意,我也愿意添加日期列而不是访问ID(我正在使用Oracle)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。