首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在hive sql中获取每个组的最大row_number()

如何在hive sql中获取每个组的最大row_number()
EN

Stack Overflow用户
提问于 2018-06-28 22:52:54
回答 4查看 3.8K关注 0票数 1

使用hive SQL中的row_number(),我可以通过在where子句中选择1来过滤重复项/选择id的第一个实例,如下所示。这里我需要的是如何找到每个组中的最后一个实例。

代码语言:javascript
复制
select * from 
(select c1,c2,c3,c4,c5,id, row_number() over(partition by id ORDER BY id) as seq
from 
table) as cnt where seq = 1;

例如,我的要求是,如果id1212有3个实例,1313在表中有5个实例,如下所示,我可以使用上面的查询,并通过在where子句中选择1来仅获得一个实例。但是下面的id1212是3,id1313是5。

代码语言:javascript
复制
 c1,  c2,  c3,  c4,  c5,  ID     seq
2020 2020 2020 2020 2020 1212     1
2021 2020 2021 2020 2021 1212     2
2022 2020 2022 2020 2022 1212     3
2023 2020 2023 2020 2023 1313     1
2024 2020 2024 2020 2024 1313     2
2025 2020 2025 2020 2025 1313     3
2026 2020 2026 2020 2026 1313     4
2026 2020 2026 2020 2026 1313     5
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-06-28 23:05:42

代码语言:javascript
复制
select id,max(seq) over(partition by id ORDER BY id)from 
(select *, row_number() over(partition by id ORDER BY id) as seq
from 
table)maxseq
group by id
票数 2
EN

Stack Overflow用户

发布于 2018-06-28 22:55:21

使用COUNT(*) OVER (PARTITION BY id) AS cnt添加额外的列。它将包含组中的行数,这也是组的最大ROW_NUMBER值。

票数 2
EN

Stack Overflow用户

发布于 2018-06-28 23:29:00

group by中使用所有这些列,并在row_number()上使用max

代码语言:javascript
复制
select c1,c2,c3,c4,c5,id,max(r_no) 
from 
(
    select c1,c2,c3,c4,c5,id, row_number() over (partition by id ORDER BY c1,c2,c3,c4,c5,id) as r_no
    from 
    table
) a
group by c1,c2,c3,c4,c5,id
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51085920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档