AWS athena sql 查询以获取不同的数据
Posted
技术标签:
【中文标题】AWS athena sql 查询以获取不同的数据【英文标题】:AWS athena sql query to get distinct data 【发布时间】:2020-05-16 18:21:55 【问题描述】:以下是我在 Excel 表中的数据。此数据存储在 S3 存储桶中。这些数据会使用 Lambda 函数通过 DynamoDB 流数据不断更新。
rollno | status | name | place
----------------------------------
1 | pending | x | london
1 | approved | x | london
1 | progress | x | london
1 | completed | x | london
2 | pending | y | delhi
2 | approved | y | delhi
2 | progress | y | delhi
3 | pending | z | newyork
3 | approved | z | newyork
4 | pending | a | seattle
如您所见,只有状态从pending -> approved -> progress -> completed
变为rollno
,所有其他值相同。
表是在 AWS Athena 中创建的。我的目标是查询 Athena 并获得以下格式的结果(获取最新状态的详细信息)。
rollno | status | name | place
----------------------------------
1 | completed | x | london
2 | progress | y | delhi
3 | approved | z | newyork
4 | pending | a | seattle
我是 SQL 新手。我能否获得有关编写 SQL 查询以获得高于预期结果的帮助。 我尝试过,但无法找到在 SQL 中执行此操作的方法。
【问题讨论】:
如果你有一个 updated_time 列,你可以简单地查询它并得到结果。 这并不能解决问题。即使我使用 updated_time 进行查询,我仍然会得到重复值 【参考方案1】:如果您有 update_time 列,您可以分组并获取最新记录。在这里,我考虑将rollno 分组。如果你愿意,你也可以使用名称和地点进行分组
select rolno,status,name,place from table_T where rollno||updated_time
in
(
select rollno||max(updated_time) from table_T group by rollno
)
【讨论】:
以上是关于AWS athena sql 查询以获取不同的数据的主要内容,如果未能解决你的问题,请参考以下文章
AWS Athena (Presto) DISTINCT SQL 查询中的重复结果?