Athena多列分组查询报错:duration需为聚合表达式或在GROUP BY中
解决Athena分组查询中聚合列的语法错误
问题原因
你的查询违反了SQL分组查询的核心规则:SELECT子句中的列要么出现在GROUP BY子句中,要么被聚合函数包裹。原查询里duration既不在GROUP BY里,也没有用聚合函数处理,因此触发语法错误。
修正后的查询语句
根据你要将对应列值聚合为列表的需求,使用Athena支持的array_agg()聚合函数,将同一分组下的所有duration值合并为一个列表:
SELECT region, family, tenancy, platform, size_factor, array_agg(duration) AS duration_list FROM default.sell_durations WHERE CAST(creation_date AS timestamp) BETWEEN CAST(? AS timestamp) AND CAST(? AS timestamp) GROUP BY region, family, tenancy, platform, size_factor
关键修改说明
- 使用
array_agg(duration)对duration列做聚合操作,生成每个分组对应的duration值列表 - 通过
AS duration_list为聚合后的列表列设置别名,便于后续引用 - 保留原WHERE条件和GROUP BY子句,确保分组筛选逻辑不变
内容的提问来源于stack exchange,提问作者etay arama
相关产品推荐
相关产品推荐

