2017-08-04 16 views
0

我有一個數據集,看起來像這樣有代表性的數據集(這是從this query的結果集):如何在蜂巢SQL組合在一起時間相關的事件

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 

我就得到了如知道我可能需要某種形式的ROW_NUMBER功能和分區,但我不能完全換我的頭周圍。

+0

百萬似乎是一個非問題,即使是局部的數據庫。 –

+0

好了,你不一定要交給別人Excel電子表格400萬行,當幾千元就足夠了。 –

回答

1

您可以使用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;