代码之家  ›  专栏  ›  技术社区  ›  Robert Harvey

如何将配置单元SQL中与时间相关的事件组合在一起

  •  0
  • Robert Harvey  · 技术社区  · 8 年前

    this query ):

    time                          
    2012-02-01 23:43:16.9088243 <--
    2012-02-01 23:43:16.9093561
    2012-02-01 23:43:16.9098879
    
    2012-02-01 23:43:17.1018243 <--
    2012-02-01 23:43:17.1023561
    2012-02-01 23:43:17.1028879
    
    2012-02-01 23:43:17.2018243 <--
    2012-02-01 23:43:17.2023561
    2012-02-01 23:43:17.2028879
    

    结果包含数百万行,所以现在我们需要一种方法来细化它,以便我们可以分析它。

    我需要一个可以 识别距离上一个时间戳超过千分之一秒的时间戳。 结果输出(假设第一组三个也比前一组少十分之一秒)为:

    2012-02-01 23:43:16.9088243
    2012-02-01 23:43:17.1018243
    2012-02-01 23:43:17.2018243
    

    1 回复  |  直到 8 年前
        1
  •  1
  •   Gordon Linoff    8 年前

    lag() 为此:

    select t.*
    from (select t.*,
                 lag(time) over (order by time) as prev_time
          from t
         ) t
    where prev_time is null or
          time > prev_time + interval '0.001' second;