

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 搭配陣列使用彙總函式
<a name="arrays-and-aggregation"></a>
+ 若要在陣列中新增值，請使用 `SUM`，如下列範例所示。
+ 若要彙總陣列中的多個資料列，請使用 `array_agg`。如需相關資訊，請參閱[從子查詢建立陣列](creating-arrays-from-subqueries.md)。

**注意**  
自 Athena 引擎版本 2 開始，彙總函數支援 `ORDER BY`。

```
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` 陳述式中，與其使用 `sum()` 和 `UNNEST`，您可以使用 `reduce()` 來減少處理時間和資料傳輸，如下列範例所示。

```
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     |
+----------------------+
```