首页 > 解决方案 > Hive - 从一堆列中获取最大值

问题描述

我有一些这样的信息:

id. amt.  date.  
1.  23.    10/18
1.  20.    10/14
1.  22.    10/18
2.  10.    10/13
2.  10.    10/13

我想获得日期的最大值,然后是 amt 的最大值。如果有重复,我只想要一个。

1. 23.  10/18
2. 10.  10/13

我可以使用多个连接和过滤来完成此操作,但我想知道是否有任何分析函数可以使其更高效和更具可读性。也欢迎任何使用有效连接的技巧。谢谢。

标签: sqljoinhivehiveql

解决方案


您可以使用row_number()

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

推荐阅读