PostgreSQL 기초강의, PostgreSQL 기초강좌
80강 SQL 함수 정리 : PostgreSQL ARRAY_AGG Functions
SQL 함수 정리 80강 시작합니다.
이번 시간에는
▶ PostgreSQL ARRAY_AGG Functions
에 대해서 알아보는 시간입니다.
이번 시간에는 PostgreSQL ARRAY_AGG() 집계 함수를 사용하여 입력 값 집합에서 배열을 반환하는 방법에 대해 알아봅니다.
Introduction to PostgreSQL ARRAY_AGG() function
PostgreSQL ARRAY_AGG() 함수는 값 집합을 입력받아서 집합의 각 값이 배열 요소에 할당된 배열을 반환하는 집계 함수입니다.
다음은 ARRAY_AGG() 함수의 구문을 보여줍니다:
ARRAY_AGG(expression [ORDER BY [sort_expression {ASC | DESC}], [...])
ARRAY_AGG()는 배열 요소에 유효한 모든 유형의 값을 반환하는 식을 사용합니다.
ORDER BY 절은 선택적 절입니다. 집계에서 처리되는 행의 순서를 지정하여 결과 배열의 요소 순서를 결정합니다.
AVG(), COUNT(), MAX(), MIN(), SUM()과 같은 다른 집계 함수와 유사하게 ARRAY_AGG()가 GROUP BY 절과 함께 사용되는 경우가 많습니다.
PostgreSQL ARRAY_AGG() function examples
샘플 DVD_RENTAL 데이터베이스의 film, film_actor 및 actor 테이블을 시연에 사용합니다.
erd에 관계 표시가 잘못되어 있는데
film : film_actor는 1:n
actor : film_actor는 1:n 관계입니다.
한 영화는 여러 배우가 출연하며, 배우는 여러 영화에 출연할 수 있습니다.
영화와 배우 사이에 film_actor라는 관계 테이블이 존재하는 형태입니다.
Using PostgreSQL ARRAY_AGG() function without the ORDER BY clause example
다음 예제에서는 ARRAY_AGG() 함수를 사용하여 각 영화의 영화 제목 목록과 배우 목록을 반환합니다:
SELECT
title,
ARRAY_AGG (first_name || ' ' || last_name) actors
FROM
film
INNER JOIN film_actor USING (film_id)
INNER JOIN actor USING (actor_id)
GROUP BY
title
ORDER BY
title;
각 영화에 출연한 배우들이 ARRAY_AGG() 함수에 의해 배열로 나옵니다.
보시다시피, 각 영화의 배우들은 임의로 순서로 나옵니다. 배우를 성 또는 이름별로 정렬하려면 ARRAY_AGG() 함수에서 ORDER BY 절을 사용할 수 있습니다.
inner join 강의 때 말씀 안 드렸는데
위의 조인 구문은 다음과 같이 사용할 수도 있습니다.
SELECT
a.title,
ARRAY_AGG (c.first_name || ' ' || c.last_name) actors
FROM
film a,
film_actor b,
actor c
WHERE a.film_id = b.film_id
AND b.actor_id = c.actor_id
GROUP BY
a.title
ORDER BY
a.title;
조인될 테이블을 나열하고 where 조건에서 조인 조건을 표현합니다.
저는 이 방식이 더 익숙하며 지금도 inner join은 이 방법으로 작성하고 있습니다.
Using PostgreSQL ARRAY_AGG() function with the ORDER BY clause example
이 예에서는 ARRAY_AGG() 함수를 사용하여 배우의 이름으로 정렬된 각 영화의 배우 목록을 반환합니다:
SELECT
title,
ARRAY_AGG (
first_name || ' ' || last_name
ORDER BY
first_name
) actors
FROM
film
INNER JOIN film_actor USING (film_id)
INNER JOIN actor USING (actor_id)
GROUP BY
title
ORDER BY
title;
다음 쿼리에 표시된 것처럼 배우의 이름과 성을 기준으로 각 영화의 배우 목록을 정렬할 수 있습니다:
SELECT
title,
ARRAY_AGG (
first_name || ' ' || last_name
ORDER BY
first_name ASC,
last_name DESC
) actors
FROM
film
INNER JOIN film_actor USING (film_id)
INNER JOIN actor USING (actor_id)
GROUP BY
title
ORDER BY
title;
이번 시간에는 PostgreSQL ARRAY_AGG() 함수를 사용하여 입력 값 집합에서 배열을 반환하는 방법에 대해 배웠습니다.
감사합니다.
본 강의는 PostgreSQL Tutorial을 참조합니다. https://www.postgresqltutorial.com/ |
Do it! SQL을 찾아 주셔서 감사합니다. 공감 ♥ , 댓글이 큰 힘이 됩니다. |
'IT > SQL 기초강좌 (PostgreSQL)' 카테고리의 다른 글
82강 SQL 함수 정리 : PostgreSQL Window Functions (122) | 2023.01.25 |
---|---|
81강 SQL 함수 정리 : PostgreSQL STRING_AGG Functions (50) | 2023.01.24 |
79강 SQL 함수 정리 : PostgreSQL Aggregate Functions (99) | 2023.01.22 |
78강 SQL 초석 다지기 : PostgreSQL Recursive Query (74) | 2023.01.21 |
77강 SQL 초석 다지기 : PostgreSQL Common Table Expressions (124) | 2023.01.20 |
댓글