将聚合函数与数组结合使用 - Amazon Athena
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

将聚合函数与数组结合使用

  • 要在数组中添加值,请使用 SUM,如以下示例所示。

  • 要在数组中聚合多个行,请使用 array_agg。有关信息,请参阅从子查询创建数组

注意

聚合函数不支持 ORDER BY,例如,您不能在 array_agg(x) 中使用它。

WITH dataset AS ( SELECT ARRAY [ ARRAY[1,2,3,4], ARRAY[5,6,7,8], ARRAY[9,0] ] AS items ), item AS ( SELECT i AS array_items FROM dataset, UNNEST(items) AS t(i) ) SELECT array_items, sum(val) AS total FROM item, UNNEST(array_items) AS t(val) GROUP BY array_items;

在最后一个 SELECT 语句中,您可以使用 reduce() 而不是 sum()UNNEST 来减少处理时间和数据传输,如以下示例所示。

WITH dataset AS ( SELECT ARRAY [ ARRAY[1,2,3,4], ARRAY[5,6,7,8], ARRAY[9,0] ] AS items ), item AS ( SELECT i AS array_items FROM dataset, UNNEST(items) AS t(i) ) SELECT array_items, reduce(array_items, 0 , (s, x) -> s + x, s -> s) AS total FROM item;

任一查询返回以下结果。不保证返回结果的顺序。

+----------------------+ | array_items | total | +----------------------+ | [1, 2, 3, 4] | 10 | | [5, 6, 7, 8] | 26 | | [9, 0] | 9 | +----------------------+