

# 配列での集計関数を使用する
<a name="arrays-and-aggregation"></a>
+ 配列内の値を加算するには、次の例のように `SUM` を使用します。
+ 配列内の複数の行を集計するには、`array_agg` を使用します。詳細については、[サブクエリから配列を作成する](creating-arrays-from-subqueries.md) を参照してください。

**注記**  
`ORDER BY` は、Athena エンジンバージョン 2 以降の集約関数でサポートされています。

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