Database/SQL

[PostgreSQL] ARRAY_AGG, ARRAY_TO_STRING 함수 사용하기 (여러 행을 한 행으로)

헹창 2022. 8. 17.
반응형

오늘 살펴볼 POSTGRESQLARRAY_AGG 함수는 ORACLELISTAGG 와 같은 집계 함수라고 생각하면 된다.

LISTAGGORDER BY 표현식에 따라 쿼리 내 각 그룹의 행 순서를 지정해 값을 연결하여 하나의 문자열로 가져온다.

자세한 내용은 다음 게시글을 참고하자.

 

[Oracle] LISTAGG WITHIN GROUP 문

LISTAGG 구문 SELECT LISTAGG (컬럼명, 구분기호) WITHIN GROUP (ORDER BY 정렬기준컬럼) FROM 테이블명 예제 다음 테이블로 사용방법을 살펴보자 동일한 MSD_ID의 값의 LINK_ORG 값을 하나의 컬럼으로 가져오고..

haenny.tistory.com

 

예제로 이해하기

컬러와 이름의 필드가 있는 데이터를 컬러 별로 묶어서 조회하고 싶을 때, ARRAY_AGG 함수를 사용해 배열로 집계를 한 뒤, ARRAY_TO_STRING 함수를 사용하여 문자열로 조회한다

 

ARRAY_AGG 배열 집계 조회

집계함수 이기 때문에 ARRAY_AGG의 필드외에는 GROUP BY 절에 넣어준다

SELECT color, ARRAY_AGG(name) array_name
  FROM test_table
 GROUP BY color

 

ARRAY_AGG 중복 데이터 제거

만약 중복된 데이터가 있는 경우는 아래와 같이 중복된 데이터로 집계가 될 수 있다.

이 때, 중복된 데이터를 제거하고 싶다면 DISTINCT 명령어를 사용하면 중복 데이터 제거 후 조회가능하다.

SELECT color, ARRAY_AGG(DISTINCT name) array_name
  FROM test_table
 GROUP BY color

 

ARRAY_AGG 데이터 정렬

또한, 배열로 집계되는 데이터 정렬도 가능하다

SELECT color, ARRAY_AGG(name ORDER BY name) array_name
  FROM test_table
 GROUP BY color

 

 

ARRAY_AGG 배열 집계 후 ARRAY_TO_STRING 조회

SELECT color, ARRAY_TO_STRING(ARRAY_AGG(name), ',') names
  FROM test_table
 GROUP BY color

 

 

 

 

 

♬ PostgreSQL: Documentation: 15: 9.19. Array Functions and Operators

 

728x90
반응형

댓글

추천 글