2017-07-28 60 views
0

我有TITLETIME例如爲:如何識別不間斷序列的開始和結束?

TITLE |TIME 
A  |11:59 
A  |12:00 
A  |12:01 
A  |12:02 
A  |12:03 
B  |12:04 
B  |12:05 
B  |12:06 
B  |12:07 
B  |12:14 
B  |12:15 
B  |12:16 

我想計算START和序列END排序的事件列表。順序是一組在幾分鐘遵循相互不爲同一TITLE差距的事件,例如:

TITLE |START |END 
A  |11:59 |12:03 
B  |12:04 |12:07 
B  |12:14 |12:16 
+1

尋找差距和島嶼。 –

回答

2

假設所有的窗口功能被支持,你可以用lag做到這一點,運行總和分配組基於1分鐘的時間差。

select title,min(time) as start_time,max(time) as end_time 
from (select title,time,sum(col) over(partition by title order by time) as grp 
     from (select title,time, 
      case when lag(time) over(partition by title order by time) - time = 1 
      /*change this calculation for 1 minute time difference*/ 
      then 0 else 1 end as col 
      from tbl 
      ) t 
    ) t 
group by title,grp 

另一種方式是

select title,min(time),max(time) 
from (
select title,time, 
time-row_number() over(partition by title order by time) as grp 
/*change this calculation to subtract row_number from time*/ 
from tbl 
) t 
group by title,grp 
+1

很好的回答! HANA支持窗口功能。請參閱https://help.sap.com/viewer/4fe29514fd584807ac9f2a04f6754767/2.0.00/en-us/20a353327519101495dfd0a87060a0d3.html –

相關問題