查找用户花费最多时间的邮政编码

时间:2019-04-15 09:31:54

标签: hive hiveql

我有一张桌子:

  • 用户ID
  • 邮政编码
  • 邮政编码时间

我需要能够找到用户花费最多时间的那个。我尝试了一个max函数,然后我考虑了按小时Desc排序并获得前一个,但是我什么都没得到,

有人可以帮忙吗?

enter image description here

1 个答案:

答案 0 :(得分:1)

如果用户在两个poscode上花费的时间相同,则这将输出两个记录:

select
     UserID,
     Postcode,
     Hours
from
(
select 
    UserID,
    Postcode,
    Hours,
    dense_rank() over(partition by userId order by hours desc) rn
 from (select --skip this subquery if hours already aggregated by user, postcode
             UserID, Postcode, sum(Hours) hours
         from table group by UserID, Postcode
      ) s
    )s
where rn = 1;

如果每个用户需要一条记录,请使用row_number() over(partition by userId order by hours desc) rn代替dense_rank()