【问题标题】:Calculate time gaps in SQL vertica计算 SQL vertica 中的时间间隔
【发布时间】:2016-07-06 00:07:21
【问题描述】:

我有以下数据集:

(StartTime,EndTime)
(2,2.30)
(3,4.30)
(5,6)

我需要考虑两者之间的时间间隔 我需要什么:

(2,2.30)
(2.30,3)
(3,4.30)
(4.30,5)
(5,6)

如何在 SQL 中实现这一点。 我正在使用 vertica 数据库。

【问题讨论】:

  • 我已经尝试过领先/滞后并创建了新行。想看看有没有更好的办法。

标签: sql vertica


【解决方案1】:

您基本上需要使用LEAD 来生成其间的行。 GFI 也有时间序列,但老实说,它并不能很好地解决这个问题,因为您处理的是时间范围,而不是静态切片。

CREATE TABLE mytable (StartTime interval,EndTime interval)

INSERT into mytable VALUES  ( INTERVAL '2 minutes', INTERVAL '2.5 minutes');
INSERT into mytable VALUES  ( INTERVAL '3 minutes', INTERVAL '4.5 minutes');
INSERT into mytable VALUES  ( INTERVAL '5 minutes', INTERVAL '6 minutes');

SELECT StartTime, EndTime 
from mytable
union all
SELECT EndTime, lead (StartTime, 1) OVER (order by StartTime)
from mytable
order by 1

您最终会得到一个记录,指示一个开放范围,如果您不想要它可以过滤掉。如果需要,您还可以添加另一个联合以获得类似的之前时间记录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-11
    • 2011-07-02
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    • 2016-08-01
    相关资源
    最近更新 更多