먼저 가상 테이블을 생성하겠습니다.
with make_array as (
select unnest(array['고기', '고기', '고기', '채소', '채소']) as col1
, unnest(array['삼겹살', '항정살', '가브리살', '상추', '명이나물']) as col2
)
select
col1
,col2
from make_array;
unnest -> 인수로 입력받은 array를 행집합으로 반환
이런 결과가 나온다.
col1 | col2 |
고기 | 삼겹살 |
고기 | 항정살 |
고기 | 가브리살 |
채소 | 상추 |
채소 | 명이나물 |
with make_array as (
select unnest(array['고기', '고기', '고기', '채소', '채소']) as col1
, unnest(array['삼겹살', '항정살', '가브리살', '상추', '명이나물']) as col2
)
select
x.col1
, array_agg(distinct x.col2 order by x.col2) as array_agg
, array_to_string(array_agg(distinct x.col2 order by x.col2),',') as array_to_string
from make_array x
group by x.col1;
위의 쿼리를 실행하면 이런 결과가 나온다.
col1 | array_agg | array_to_string |
고기 | {가브리살,삼겹살,항정살} | 가브리살,삼겹살,항정살 |
채소 | {명이나물,상추} | 명이나물,상추 |
array_agg 함수를 쓰게되면 위 결과처럼 중괄호로 감싸진 배열형식으로 출력된다.
array_to_string 은 함수 이름 그대로 배열을 문자열로 변경시켜주는 함수이다
특히 array_to_string 은 서버에서 사용하기 편하게 가져올때 많이 사용한다.
db에서 값을 가져온 후에 자바에서 split를 자르거나 자바스크립트에서도 편하게 할수 있기 때문에
'데이터베이스' 카테고리의 다른 글
데이터베이스별 랜덤으로 레코드 가져오기 쿼리 정리 (0) | 2022.11.09 |
---|---|
[MySql] 효과적인 인덱스 설계 (0) | 2022.11.07 |
Postgresql With Recursive, UNION ALL 사용한 계층형 쿼리 (0) | 2022.09.22 |
PostgreSQL merge문 (0) | 2022.09.19 |
[MySQL] group_concat 사용하기 (멀티행을 싱글행으로) (0) | 2022.03.15 |