【发布时间】:2018-06-28 14:52:53
【问题描述】:
使用 hive SQL 中的 row_number() 我可以通过在 where 子句中选择 1 来过滤重复项/选择 id 的第一个实例,如下所示。我在这里需要的是如何找到每个组中的最后一个实例。
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;
我的要求是,例如,如果 id 1212 有 3 个实例,而 1313 在表中有 5 个实例,如下所示,我可以使用上面的查询并通过在 where 子句中选择 1 来获取一个实例。但我希望下面的 id 1212 为 3,id 1313 为 5。
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
【问题讨论】:
-
您是否还有其他列,这就是您需要行号的原因?否则你可以只使用 group by 和 count。
-
我还有其他专栏。