连续时间戳对之间的间隔中间长度

时间:2017-08-02 20:13:56

标签: sql postgresql datetime window-functions postgresql-9.5

我有一个包含timestamp列(timestamp with time zone)的表格。我想知道每对连续时间戳之间的间隔的中间长度。

例如,08:0008:1008:3009:00的时间戳(在同一天),我想要20 minutes,因为中间间隔连续时间戳之间是20分钟。

我一直在尝试使用窗口函数和超前/滞后的东西,但没有成功。

此代码可能有助于设置情况。

CREATE TABLE timestamps (
    "timestamp" timestamp with time zone
);
COPY timestamps ("timestamp") FROM stdin;
2017-08-02 08:00:53.550685-00
2017-08-02 08:10:53.550685-00
2017-08-02 08:30:53.550685-00
2017-08-02 09:00:53.550685-00
\.

1 个答案:

答案 0 :(得分:2)

尝试:

SELECT PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER by X) FROM 
(
SELECT *,
       timestamps - lag(timestamps) over (order by timestamps) As x
FROM Table1
) x

演示:http://sqlfiddle.com/#!17/9bfe9/5