sql - 计算 Oracle 中每个 ID 列的两个最近日期之间的天数
问题描述
我有一张这样的桌子:
ID
Submitted Date
00001
20-JUL-2018
00001
17-MAR-2017
00001
20-JUN-2019
00002
20-JUL-2018
00002
22-AUG-2018
00002
23-APR-2019
我想计算每个 ID 的最近两个提交日期之间的天数。
与ID = 00001一样,天数应为20-JUN-2019 - 20-JUL-2018。
我正在使用 Oracle 11G。
解决方案
一种方法使用lag()
and lead()
:
select t.*,
(submitted_date - prev_sd) as day_diff
from (select t.*,
lag(submitted_date) over (partition by id order by submitted_date) as prev_sd,
lead(submitted_date) over (partition by id order by submitted_date) as next_sd
from t
) t
where next_sd is null;
这种方法避免了任何聚合。
推荐阅读
- typescript - 编写类型定义文件
- javascript - 如何让按钮调用使用 fetch API 的函数
- php - 如果电子邮件地址有效,为什么 laravel 队列会多次尝试相同的工作?
- java - 在将某些东西馈送到管道 STDIN 之前,无法跟踪以管道 STDOUT 为源的运行过程
- python-3.x - 如何将训练有素的网络用作另一个网络keras中的分支?
- angular - 单击禁用按钮时显示消息
- java - 共享库与微服务?
- c# - First OrderBy 的结果空字符串作为动态 OrderBy 中的最后一个
- angular - 带有 Angular 的 JSPDF 和 html2canvas
- javascript - 我的玩家排名有问题吗?