在where子句中的子查询中的HIVE-聚合函数

时间:2018-10-17 13:55:33

标签: hive

我有一个要求,我只需要特定列的最新记录。 我想写类似于以下查询的内容:

select * from content_details c where c.created_date = (select max(created_date) from content_details where content_url=c.content_url);

以下查询在Hive中失败,执行此操作的另一种方法是

1 个答案:

答案 0 :(得分:0)

使用加入:

select c.* 
  from content_details c
       inner join (select content_url, 
                          max(created_date) max_created_date 
                     from content_details 
                    group by content_url
                  ) s on s.content_url=c.content_url and c.created_date=s.max_created_date 

使用Rank()分析函数:

select * from
(
select c.*, rank() over(partition by content_url order by created_date desc) rnk 
  from content_details c 
)s
where rnk=1;