MySQL의 GROUP_CONCAT()
함수는 그룹화된 행의 값들을 하나의 문자열로 결합하는 데 사용됩니다. 주로 그룹화된 결과를 하나의 컬럼에 표시할 때 유용합니다.
간단한 사용 예를 살펴보겠습니다. 예를 들어, 학생들이 각 과목에 대해 여러 번 성적을 받았다고 가정해 봅시다. 이 때 GROUP_CONCAT()
함수를 사용하여 각 과목에 대한 모든 성적을 하나의 문자열로 결합할 수 있습니다.
예를 들어, 다음은 students_scores
테이블의 구조와 데이터를 가정한 후 GROUP_CONCAT()
함수를 사용하여 학생별로 과목과 해당 성적을 결합하는 쿼리입니다.
sqlCopy code
SELECT student_id, GROUP_CONCAT(subject, ':', score SEPARATOR ', ') AS scores
FROM students_scores
GROUP BY student_id;
위의 쿼리는 각 학생별로 그룹화되어 있는 과목과 성적을 결합하여 **scores
**라는 하나의 컬럼으로 표시합니다. SEPARATOR
매개변수는 각 값 사이에 넣을 구분자를 지정합니다. 기본적으로 구분자는 쉼표입니다.
결과적으로 이 쿼리는 각 학생별로 그룹화된 성적을 다음과 같은 형태로 반환합니다.
yamlCopy code
student_id | scores
-----------|------------------------------------
1 | Math: A, Science: B, History: C
2 | Math: B, Science: A, English: A
이렇게 하면 각 학생이 각 과목에 대해 어떤 성적을 받았는지 한눈에 볼 수 있습니다.
GROUP_CONCAT은 어떻게 쓰는거지?
DEPARTMENT | NAME |
---|---|
HR | 이영애 |
HR | 구경이 |
HR | 케이 |
↓GROUP_CONCAT
DEPARTMENT | NAME |
---|---|
HR | 이영애,구경이,케이 |
이럴 때 쓸 수 있다.
select department, group_concat(name separator ' ') from tb group by department
그외 사용법