代码之家  ›  专栏  ›  技术社区  ›  Hatshepsut

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

  •  1
  • Hatshepsut  · 技术社区  · 7 年前

    我有一张桌子 timestamp 列( timestamp with time zone ). 我想知道每对连续时间戳之间间隔的中间长度。

    例如,具有时间戳(在同一天)的 08:00 , 08:10 08:30 09: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 回复  |  直到 7 年前
        1
  •  2
  •   krokodilko    7 年前

    尝试:

    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