상황에 따라서 GROUP BY 이용 시 특정 컬럼 값을 합쳐야 하는 경우가 있다. 예를 들어 한 사용자가 가질 수 있는 자동차의 대수가 여러 대 일 경우 하나의 데이터 셋한 줄로 가져오고 싶은 경우 GROUO_CONCAT을 활용하여, 나 원하는 구분자로 문자열로 묶어 반환 할 수 있다. 물론 (JPA)[https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#reference]를 쓰는 사용자들은 SQL문으로 처리하지 않겠지만 나와 같은 사람들을 위하여 블로그 포스팅한다.
만약에 아래와 같은 데이터셋에 사용자를 묶어 자동차를 ,로 구분 한 문자열로 처리할 경우다.
USER | CAR |
KIM | K5 |
LEE | TUCAN |
KIM | K7 |
LEE | GRANDEUR |
SELECT USER,
GROUP_CONCAT(CAR) AS CAR
FROM USER_CAR
GROUP BY USER
위와 같이 GROUP BY를 통해 묶고 GROUP_CONCAT을 사용하여 CAR의 종류를 ,로 합친 문자열을 반환하게 된다.
USER | CAR |
KIM | K5,K7 |
LEE | TUCAN,GRANDEUR |
만약 다른 구분자를 활용하고 싶다면 아래와 같이 SQL문을 변경하여 GROUP_CONCAT에 구분자를 설정하여 준다.
SELECT USER,
GROUP_CONCAT(CAR separator '|') AS CAR
FROM USER_CAR
GROUP BY USER
USER | CAR |
KIM | K5|K7 |
LEE | TUCAN|GRANDEUR |
필요에 따라 적적하게 사용한다면 좋은 유익한 Database 함수일 것 같다.