2015-08-20 107 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; 

行号的差异是,当相邻值是相同的常数。