在 SQL 中计算当前行和下一个可用日期值之间的差异

Posted

技术标签:

【中文标题】在 SQL 中计算当前行和下一个可用日期值之间的差异【英文标题】:Calculate difference between current row and next available date value in SQL 【发布时间】:2020-08-28 09:16:45 【问题描述】:

我在Postgres SQL 中得到了当前问题重置和下一个停止时间之间的差异。我无法理解,如何使用窗口函数完成此操作。我尝试了NEXT_VALUEFIRST_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 中计算当前行和下一个可用日期值之间的差异的主要内容,如果未能解决你的问题,请参考以下文章

js计算当前日期上一个月和下一个月

SQL Server 中第一条记录结束日期和下一条记录开始日期之间的重叠

如何使用mysql计算两个日期之间的时间差

如何在liquibase中设置当月第一个日期和下个月的默认值?

PowerShell 如果下一行包含“此字符串”,则输出当前行和下 3 行,否则仅输出当前行

如何计算当前行与下一行?