我目前的表格如下:
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列,那么我将无法获得所需的输出。
答案 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()
在第一个查询中获得相同的效果。