蜂巢中的最大聚合函数

时间:2015-07-27 01:10:23

标签: sql hive

我目前的表格如下:

ID    EventID    Time               Count
1     ABC        1435205220000      5
1     ABC        1500205220000      3
2     DEF        1435205220000      4

输出:

ID    EventID    Time               Count
1     ABC        1435205220000      5
2     DEF        1435205220000      4

目前,我Group by ID,EventID获取max(计数)。但是,我在输出中也需要Time,但如果我将Time添加到Group By列,那么我将无法获得所需的输出。

1 个答案:

答案 0 :(得分:1)

使用row_number()

select t.*
from (select t.*,
             row_number() over (partition by id order by count desc) as seqnum
      from table t
     ) t
where seqnum = 1;

编辑:

我建议您更新Hive的版本。另一种选择是这样的:

select t.*
from table t join
     (select id, max(count) as maxc
      from table t
      group by id
     ) tt
     on t.id = tt.id;

如果id具有两个具有相同最大计数的行,则将返回重复行。 (您可以使用rank()代替row_number()在第一个查询中获得相同的效果。

相关问题