在aws athena中按列列出聚合结果?
Posted
技术标签:
【中文标题】在aws athena中按列列出聚合结果?【英文标题】:List aggregated result over group by column in aws athena? 【发布时间】:2021-06-19 19:11:42 【问题描述】:我有一个具有以下架构的表
Test Name, Marks
一些条目是:(maths,78),(maths,90),(English,20),(English,40)
现在我希望将此表按“测试名称”分组,这样输出=
maths [78,90], English [20,40]
在 AWS 雅典娜中。我真的看不到任何聚合函数在互联网上的“分组依据”子句中执行此操作
【问题讨论】:
【参考方案1】:你可以使用array_agg函数:
WITH example_table AS
(SELECT 'Maths' as test_name, 78 as marks UNION ALL
SELECT 'Maths', 90 UNION ALL
SELECT 'English', 20 UNION ALL
SELECT 'English', 40)
SELECT test_name, array_agg(marks) as marks
FROM example_table
GROUP BY test_name
如果你需要更花哨的值,你可以添加 reduce 函数:
WITH example_table AS
(SELECT 'maths' as test_name, 78 as marks UNION ALL
SELECT 'maths', 90 UNION ALL
SELECT 'English', 20 UNION ALL
SELECT 'English', 40)
SELECT test_name, reduce(array_agg(marks), ARRAY[], (s, x) -> s || x, s -> s) as marks
FROM example_table
GROUP BY test_name
【讨论】:
【参考方案2】:你在找array_agg()
吗?
select test_name, array_agg(marks)
from t
group by test_name;
【讨论】:
以上是关于在aws athena中按列列出聚合结果?的主要内容,如果未能解决你的问题,请参考以下文章
AWS Athena 无法将 FIRST_VALUE() 识别为聚合表达式
如何使用 ETL (AWS Glue) 聚合数据,以便我们可以使用 Athena 通过特定属性仅选择一部分数据