본문 바로가기
IT/PostgreSQL

[PostgreSQL] - 포스트그레에서 ARRAY_AGG(), ARRAY_TO_STRING() 함수를 사용해서 Row(행)을 Array(배열)로 처리하고 String(문자열)로 변환하는 방법

by 차이나는 개발자 2023. 1. 11.
728x90
반응형

#포스트그레에서 ARRAY_AGG(), ARRAY_TO_STRING() 함수를 사용해서 Row(행)을 Array(배열)로 처리하고 String(문자열)로 변환하는 방법

-PostgreSQL의 ARRAY_AGG(), ARRAY_TO_STRING() 함수는 배열 관련 집계함수입니다.

 

 

#예제 테이블 데이터

 

 

#ARRAY_AGG() 함수 사용 예제

-ARRAY_AGG() 함수는 group by와 주로 쓰이며 다수의 row들의 특정칼럼값을 하나의 배열에 담고 싶을 때 사용하는 함수입니다.

-ARRAY_AGG 함수를 사용해서 주소가 같은 사람들을 그룹화해서 이름을 담는 쿼리입니다.

SELECT address, ARRAY_AGG(name)
FROM member 
GROUP BY address;

 

#결과

-주소별로 그룹화되어 있으며 주소에 해당하는 사람들의 이름들이 한 칼럼의 배열(중괄호) 안에 다 들어가 있는 것을 확인하실 수 있습니다.

-배열에 들어가는 데이터 타입은 지정한 컬럼의 데이터 타입과 같습니다.

 

#distinct를 사용하여 배열의 중복데이터 값을 제거할 수 있습니다.

SELECT address, ARRAY_AGG(distinct name)
FROM member 
GROUP BY address;

 

#결과

-위의 결과와 비교하여 서울에 사는 홍길동11의 중복된 값들이 사라진 것을 확인하실 수 있습니다.

 

#order by를 사용해서 배열의 순서를 지정할 수 도 있습니다.

SELECT address, ARRAY_AGG(name order by name desc)
FROM member 
GROUP BY address;

 

#결과

-이름 내림차순으로 출력된 것을 확인하실 수 있습니다.

 

 

#ARRAY_TO_STRING('배열', '구분자') 함수 사용 예제

-ARRAY_TO_STRING() 함수는 배열을 문자열로 변환시켜 주는 함수입니다.

-첫 번째 인자는 변환시켜 줄 배열값을 넣고 두 번째 인자는 배열을 문자열로 바꿀 때 구분자로 사용하는 문자를 지정하면 됩니다.

-위에서 ARRAY_AGG() 함수를 사용해서 만든 배열을 문자열로 변환시키는 쿼리입니다.

(구분자는 콤마(,)로 지정했습니다.)

SELECT address, ARRAY_TO_STRING(ARRAY_AGG(name), ',') 
FROM member 
GROUP BY address;

 

#결과

-ARRAY_AGG() 함수 실행결과에서는 중괄호 {} 안에 데이터들이 들어있었는데 ARRAY_TO_STRING()으로 변환 후 데이터들이 문자열로 변환된 것을 확인하실 수 있습니다.

(구분자로 콤마(,)가 출력된 것을 확인하실 수 있습니다.)

 

 

 

728x90
반응형

댓글