在 SQL 中计算当前行和下一个可用日期值之间的差异
Posted
技术标签:
【中文标题】在 SQL 中计算当前行和下一个可用日期值之间的差异【英文标题】:Calculate difference between current row and next available date value in SQL 【发布时间】:2020-08-28 09:16:45 【问题描述】:我在Postgres SQL
中得到了当前问题重置和下一个停止时间之间的差异。我无法理解,如何使用窗口函数完成此操作。我尝试了NEXT_VALUE
和FIRST_VALUE
,但我看到了移动聚合的示例。我需要一个查询来得到这个。
我需要实现 '22/08/2020 11:29:00'
和 '17/08/2020 11:19:00'
之间的差异,这告诉我运行时间的持续时间。
【问题讨论】:
您的表格结构看起来很奇怪。三分之二的列中是否真的存在具有值的行? 是的,它们可以为空。因为它们是问题重置和停止时间,这是系统运行的问题 如果连续两期,那就停一期怎么办? 不,实际上.. 正常运行,然后停止。下一次操作员重置(问题 TS)发生并再次正常运行。 【参考方案1】:您似乎想要每个 stoptime
和最新的先前 issue
之间的差异。如果问题和停止时间正确交错,正如您在 cmets 中解释的那样,那么您可以使用如下窗口函数:
select t.*, stop_time - max_issue as diff
from (
select t.*, max(issue) over(order by issue) max_issue
from mytable t
) t
where stop_time is not null
【讨论】:
以上是关于在 SQL 中计算当前行和下一个可用日期值之间的差异的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 中第一条记录结束日期和下一条记录开始日期之间的重叠
如何在liquibase中设置当月第一个日期和下个月的默认值?