【问题标题】:Calculate difference between current row and next available date value in SQL在 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)发生并再次正常运行。

标签: sql postgresql datetime window-functions gaps-and-islands


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 2018-10-29
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多