选择配置单元中的最大时间戳

bbmckpt7  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(437)


我有一个表customer,在不同的时间戳中有两条记录。我要选择最大时间戳记录:2014-08-15 15:54:07.379。

Select Customer_ID, Account_ID, max(ProcessTimeStamp)
from Customer
group by Customer_ID,   Account_ID

我应该得到一个记录,但实际结果是两个记录。
如何获取max processtimestamp记录?

zqry0prt

zqry0prt1#

你可以在这里使用windows函数。您可以使用dense\u rank()或row\u num()。
1.使用稠密秩()

select customer_id,account_id,processTimeStamp
    from (select *
          ,dense_rank() over(partition by customer_id order by processTimeStamp desc) as rank
          from "your table" 
         ) temp
    where rank=1

2.使用行号

select customer_id,account_id,processTimeStamp
        from (select *
              ,row_number() over(partition by customer_id order by processTimeStamp desc) as rank
              from "your table" 
             ) temp
        where rank=1

但是对于row_number(),每一行都将得到一个唯一的编号,如果有重复的记录,则row_number将只给出row number=1的行(在上述情况下)。

相关问题