

# 배열과 함께 집계 함수 사용
<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     |
+----------------------+
```