SQL Advanced: GROUP_CONCAT(...)

하하호호훈이·2025년 5월 30일

SQL(MySQL) MUST KNOW

목록 보기
20/23
post-thumbnail

이번에는 여러 행의 값을 하나의 문자열로 합치는 데 유용한 함수인 GROUP_CONCAT()에 대해 배워봅시다! 이 함수는 MySQL에서 지원하는 집계 함수로, GROUP BY와 함께 자주 사용되며, 고객별, 직원별, 배우별 등 여러 항목을 하나로 정리할 때 유용합니다.

💡 모든 예시는 company_dbemployees, projects 테이블 기반입니다.


✅ 기본 문법

GROUP_CONCAT(expression [ORDER BY ...] [SEPARATOR '구분자'])
  • expression: 문자열로 연결할 컬럼
  • ORDER BY: 연결 순서 지정 (선택)
  • SEPARATOR: 연결 사이에 넣을 구분자 (기본은 쉼표)

1. 예제 ① 직원별 수행한 프로젝트 목록 정리

SELECT e.emp_id, e.first_name,
       GROUP_CONCAT(p.project_name ORDER BY p.project_name SEPARATOR ', ') AS project_list
FROM employees e
LEFT JOIN projects p ON e.emp_id = p.emp_id
GROUP BY e.emp_id, e.first_name;

예시 결과:

emp_idfirst_nameproject_list
1AliceAI Platform, Data Lake
2BobRebranding
3CharlieAutomation
4DianaNULL

2. 예제 ② 부서별 직원 이름 나열

SELECT department,
       GROUP_CONCAT(first_name ORDER BY first_name SEPARATOR ' / ') AS member_names
FROM employees
GROUP BY department;

예시 결과:

departmentmember_names
EngineeringAlice / Charlie
MarketingBob
HRDiana

3. 예제 ③ 프로젝트 예산 등급별 프로젝트 목록

SELECT
  CASE
    WHEN budget >= 90000 THEN 'A'
    WHEN budget >= 70000 THEN 'B'
    ELSE 'C'
  END AS budget_rank,
  GROUP_CONCAT(project_name ORDER BY project_name SEPARATOR '; ') AS project_names
FROM projects
GROUP BY budget_rank;

예시 결과:

budget_rankproject_names
AAI Platform
BData Lake
CAutomation; Rebranding

✅ 정리 요약: GROUP_CONCAT 핵심 포인트

기능설명
문자열 연결 집계하나의 그룹 안에 여러 값을 하나의 문자열로 이어붙임
SEPARATOR 옵션 지원기본 쉼표 외에 원하는 구분자로 값 구분 가능
정렬 기능 지원ORDER BY를 통해 연결 순서 지정 가능
NULL 처리연결할 값이 NULL이면 해당 항목은 무시됨

지금까지 advanced한 SQL 공부하느라 고생하셨습니다! 다음부터는 expert가 되기 위한 SQL 문법들을 알아보아요!!!

profile
AI, Data Science/Analysis 리뷰용가리지용 😆

0개의 댓글