【发布时间】:2021-11-15 23:14:06
【问题描述】:
我有以下表格和数据:
PatientID PatientName Diagnosed ReportDate ...
1 0
1 0
1 0
1 1
因此,每个患者都有多行,因为报告每天出现几次。 每当诊断字段更改为 1 时,对于该患者,我想获取过去 3 天的数据。所以当 Diagnosed ==1 时,获取每个患者的报告时间 -3 天的数据。
SELECT Patients.ReportDate
FROM Patients
WHERE Diagnosed = 1 and date > ReportDate - interval '3' day;
因此,可以使用 ReportDate - 间隔时间来获取过去 3 天的数据,但是如何根据诊断字段为每个患者指定该数据(因为该患者可以有多个 id)?
我一般是在python中获取csvs后做这个过滤,但是数据集太大了,所以我想先过滤再转成dataframes。
【问题讨论】:
-
患者和报告是否有单独的相关表格?
-
所以我只能访问这个 Patient 表,它接收频繁的报告。我应该得到的所有数据都来自这张表。还有另一个唯一 ID 作为字段,因为 PatientID 是重复的,但我只共享了与过滤相关的列。
-
请显示您的 Postgres 版本 (
SELECT version();) 和实际表定义(针对相关列)包括 PK 列、确切的数据类型和约束 (CREATE TABLE ...) 可以Diagnosed返回到0为相同的PatientID(重复)?如果是这样,只报告最新一集? -
是的,它会在设定的时间自动接收报告。诊断是基于移动传感器数据自动进行的。因此,如果怀疑它有疾病,它将报告 1,否则它会一直报告 0。我无权更改数据填充方式。我只需要查询并获取感兴趣的信息。因此,每 6 小时,他们系统中的所有患者都会收到一份报告,其中包含“是”或“否”的诊断结果。可以重复不不不,直到怀疑他生病了。这就是为什么我需要查询从他报告生病的那一刻到最近 3 天的数据。
标签: sql postgresql gaps-and-islands