在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 通过特定属性仅选择一部分数据

Power Query M - 使用自定义聚合(百分位)按列值分组

在雪花中按日期聚合数据组

使用多个字段在 MongoDB 聚合框架中按相关性排序

使用多个字段在 MongoDB 聚合框架中按相关性排序