sql - 一种只选择表示进展的行而忽略表示恢复的行的方法?
问题描述
我有一个包含数千名患者的数据集,其中包括他们的 ID 和随着时间推移的疾病阶段。数据很复杂,因为有些患者病情恶化,然后康复,然后再次恶化。我只想从患者中选择表明疾病进展的行。
例如,ID 1 从 3 > 4 进展,然后恢复到第 1 阶段,然后再次恶化到第 5 阶段。如何忽略指示恢复的行,只保留指示随时间进展的行?这甚至可以使用 SQL 吗?先感谢您!
数据是什么样的:
ID stage_date disease_stage
1 1-JAN-15 3
1 3-JAN-15 4
1 6-JAN-15 1
1 9-JAN-15 5
1 10-JAN-15 1
我想要的是:
ID stage_date disease_stage
1 1-JAN-15 3
1 3-JAN-15 4
1 9-JAN-15 5
解决方案
如果我理解正确,您需要与累积最大值匹配的行:
select t.*
from (select t.*,
max(disease_stage) over (partition by id order by disease_stage) as max_running_disease_stage
from t
) t
where max_running_disease_stage = disease_stage;
这将保持联系。如果你不想要领带:
select t.*
from (select t.*,
max(disease_stage) over (partition by id
order by stage_date
rows between unbounded preceding and 1 preceding
) as max_running_disease_stage
from t
) t
where max_running_disease_stage is null or
disease_stage > max_running_disease_stage;
推荐阅读
- javascript - JavaScript 中的高阶函数并在 EventEmitter 的类中引用“this”关键字
- android - Flutter:FCM 未在 android 版本上发送通知
- sorting - 按日期排序对象 = T.get_date() 混淆
- java - 如何反序列化 JSON ?无法从 START_ARRAY 令牌中反序列化“RegionResponse”实例
- metpy - 示例中的 mpcalc.advection dim_order 和缺失值
- reactjs - 无法从 react-native-dropdown-picker 中选择项目
- tomcat8 - Tenable 显示将 tomcat 升级到 8.5.60 的漏洞,尽管升级已在存档服务器中完成
- express - 如何不在 Node.js 中保存相同的电子邮件用户?
- c# - 模型类属性字符串长度为 nvarchar max
- oracle - oracle 中的 ORA-00955 错误,我要更改什么来解决此问题