[MySQL] GROUP_CONCAT

2022. 1. 24. 20:57개인 공부 공간/SQL

MySQL에서 GROUP BY를 사용하되 집계하지 않고 요소들을 리스트화 하는 방식에 대해 정리하려고 한다.

문법 자체는 매우 단순해서 아래 예시를 통해 설명하려고 한다.

예시 데이터는 따릉이 토이 프로젝트때 사용한 테이블 중 서울 공원들의 위치 정보를 담고 있는 park_location_table 테이블을 사용하였다.

park_location_table

위 테이블에서 행정구(city_gu) 별로 공원들을 리스트화 해서 집계하려고 한다.

SELECT city_gu,
       GROUP_CONCAT(parkname) AS 'park_list'
FROM park_location_table
GROUP BY city_gu;

이와 같이 실행하면 아래와 같은 결과가 나온다.

GROUP_CONCAT 결과 1

항목들 사이의 구분 기준은 아래와 같이 구체적으로 설정 가능하다.

SELECT city_gu,
       GROUP_CONCAT(parkname SEPARATOR ' | ') AS 'park_list'
FROM park_location_table
GROUP BY city_gu;

GROUP_CONCAT 결과 2

정리하고 보니 파이썬의 groupby() + agg(list)와 거의 동일한 기능을 제공하는 문법이랑 거의 유사한 것 같다.

 


References

MySQL GROUP_CONCAT Function

출처: https://privatedevelopnote.tistory.com/81 [개인노트]