当前位置: 首页 > 面试题库 >

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

米夕
2023-03-14
问题内容

我在尝试为此表定义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)。


问题答案:

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


 类似资料:
  • 问题内容: 我在为MySQL编写SQL查询时遇到一些问题。我有一个具有以下结构的表: 我想创建一个查询,该查询从表中提取以下信息: 查询结果应如下所示: 当然,每个唯一的“ id”具有更多行。 我已经尝试过一些查询,例如 这将返回正确的结果,但是我必须使用“ pass”的其他可能值(最多7个)来扩展它 我尝试在AVG中使用嵌套的SELECT,但这没有用,因为我没有弄清楚如何正确地将其限制为当前的’

  • 我需要根据不同组的Id进行行的排列和组合:作为SQL查询 表中数据: 注意:可以有任意数量的组,周期开始是一个日期时间 所需输出为:应为来自3*2*3个不同组行的18个组合(即此处为组1、组2和组3),其最大周期开始日期为:

  • 我希望请求一个dynamodb表,但我不知道如何使用Python2.7SDK boto3执行GROUPBY和ORDERBY。 我读了一遍又一遍的aws留档和大多数堆栈主题,但我没有找到明确的答案,因为我的请求相当复杂。 我将从我的表中获取所有项目,这些项目通过“源”具有“permaname”组,并且我将通过在DESC上创建_获得结果顺序。 这就是我如何做我的请求我现在的简单请求: 我希望有人知道答

  • 问题内容: 我有一张标签表,想从列表中获得计数最高的标签。 样本数据如下所示 使用 让我得到正在寻找的完美数据。但是,我想对它进行组织,以使最高的标签数排在首位,并限制它仅向我发送前20个左右。 我试过了 而且我不断收到“组功能的无效使用-ErrNr 1111” 我究竟做错了什么? 我正在使用MySQL 4.1.25-Debian 问题答案: 在所有版本的MySQL中,只需在SELECT列表中为聚

  • 但是生成的SQL查询是 正如您所看到的,括号改变了,我相信两个查询中的条件并不相同。是虫子吗?使用hibernate和spring以及postgresql数据库。

  • 问题内容: 我正在尝试编写一个查询,以返回价格落入特定时间段的商品数量的查询: 例如,如果我的表是: 输出: 到目前为止,我这样做的方式是 然后 然后将每次粘贴的结果复制到excel中。 在sql查询中有自动的方法吗? 问题答案: Kerrek所描述的扩展选项,您可以根据案例/时间进行分组 此处,“ group by 1”表示您的select语句中的序号列…在这种情况下,为case / when为