sql - Hive - 从一堆列中获取最大值
问题描述
我有一些这样的信息:
id. amt. date.
1. 23. 10/18
1. 20. 10/14
1. 22. 10/18
2. 10. 10/13
2. 10. 10/13
我想获得日期的最大值,然后是 amt 的最大值。如果有重复,我只想要一个。
1. 23. 10/18
2. 10. 10/13
我可以使用多个连接和过滤来完成此操作,但我想知道是否有任何分析函数可以使其更高效和更具可读性。也欢迎任何使用有效连接的技巧。谢谢。
解决方案
您可以使用row_number()
:
select t.*
from (select t.*,
row_number() over (partition by id order by date desc, amt desc) as seqnum
from t
) t
where seqnum = 1;
推荐阅读
- azure-active-directory - MS Graph API 客户端 UpdateAsync() 方法给出错误
- xamarin - 如何以 xamarin 形式使用 Task 设置基本 AsyncCommand
- python - Pandas dataframe value_counts 将相同的值分别计算为唯一值
- regex - BigQuery - 在列名与正则表达式模式匹配的列中计算非空值
- javascript - 刷新页面后删除项目不起作用
- flask - 无需在烧瓶中重新加载页面即可实现更新喜欢和评论的方法?
- regex - 正则表达式与给定的输入不匹配
- node.js - Nginx `auth_request` vs Nodejs 身份验证中间件
- unit-testing - 如何使用 Jest 测试一个简单的 Svelte 购物车?
- python - 如何使用 Pandas 在 Python 中创建一年中某事发生的次数的折线图?