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

时间:2018-07-09 20:13:03

标签: hive conditional max datetime-format

enter image description here

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

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

我应该得到一条记录,但是实际结果是两条记录。

如何获取最大的ProcessTimeStamp记录?

1 个答案:

答案 0 :(得分:1)

您可以在此处使用Windows功能。 您可以使用density_rank()或row_num()。

1。使用DENSE_RANK()

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()的BUT将获得唯一的编号,如果记录重复,则row_number的记录将仅给出行号= 1(在上述情况下)的行。