sql - 如何查找每次状态更改之间的天数
问题描述
我在 Postgres 中有一个名为 Application 的表:
ID JA_ID TO_STATUS FROM_STATUS DATE
1 100 Matched NULL 2019-05-06
2 100 INterview Matched 2019-05-30
3 100 Extended INterview 2019-05-31
4 200 New_Applicant NULL 2020-04-01
5 200 INterview New_applicant 2020-04-05
6 200 Rejected interview 2020-05-10
现在我需要计算此表中每个 JA_ID 的每个状态更改之间的天数。我已经对基于 JA_ID 和 DAte(在 asc 中)的状态更改进行了排序。我的 O/P 'DAYS'列应该是这样的:
ID JA_ID TO_STATUS FROM_STATUS DATE DAYS
1 100 Matched NULL 2019-05-06 NULL
2 100 Interview Matched 2019-05-30 24
3 100 Extended INterview 2019-05-31. 1
4 200 New_Applicant NULL 2020-04-01. NULL
5 200 Interview New_applicant 2020-04-05. 4
6 200 Rejected interview 2020-05-10. 5
解决方案
假设“日期”是用数据类型定义的date
(应该是这样),您可以使用它lag()
来获取上一个日期并减去这些值:
select id, ja_id, to_status, from_status, "date",
"date" - lag("date") over (partition by ja_id order by "date") as days
from application;
推荐阅读
- asp.net - 如何在没有 AJAX 或 jQuery 的情况下滚动 GridView?
- ios - 我们如何在目标 C 中将标题“Sign in with Apple”更改为“Apple”?
- html - 按钮周围的 HTML CSS div 边距混淆不是通过 clearfix
- java - 为什么这些构造函数会出错?
- java - 如何从 Facebook 获取用户照片
- java - 如何使用 java.net InetAddress 或其他 API 知道 IP 地址
- c# - SynchronizationContext.Post 到 UI 方法 - 更新多个标签
- typescript - 由于 TypeOrmModule 而在 Heroku 上构建的 NestJS 应用程序崩溃,没有准确的错误消息
- ios - 未从 Tabbar 控制器调用委托方法
- git - DOWNLOAD_SOURCE 阶段中的 AWS Codebuild 错误