2015-08-20 124 views
1

我想識別重複的數據組,並且一直在苦苦思索,聽起來很簡單。蜂巢嵌套組通過

以下是我的數據集。

ID, TIME, Speed 
1, 10, 0 
1, 11, 0 
1, 12, 0 
1, 12, 1 
1, 13, 2 
1, 14, 0 
1, 15, 0 
1, 16, 4 

我想完成重複零速度的最小值和最大值。在這種情況下

ID, Min, Max, Value 
1 , 10 , 12, 0 
1, 14, 15, 0 

我已經嘗試了鉛/滯後函數,但能夠獲得每個單獨的行。但不是零組。我正試圖在Hive中獲得這個。

任何幫助非常感謝。

回答

2

你可以用行號的區別做到這一點:

select id, speed, min(time), max(time) 
from (select t.*, 
      (row_number() over (partition by id order by time) - 
       row_number() over (partition by id, speed order by time) 
      ) as grp 
     from table t 
    ) t 
where speed = 0 
group by id, speed, grp; 

行號的差異是,當相鄰值是相同的常數。