Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 정렬 순서를 적용한 집계 함수 호출 방법 – GROUP_CONCAT() 완벽 가이드

MySQL에서 데이터를 정렬된 순서로 집계하려면 GROUP_CONCAT() 함수와 ORDER BY 절을 함께 사용하면 됩니다. 이 글에서는 실제 예제를 통해 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable1588
    -> (
    -> StudentId int,
    -> StudentFirstName varchar(20),
    -> StudentMarks int
    -> );
Query OK, 0 rows affected (0.49 sec)

위 쿼리는 학생 ID(StudentId), 이름(StudentFirstName), 점수(StudentMarks) 세 개의 컬럼을 가진 테이블을 만듭니다.

2. 레코드 삽입하기

INSERT 명령을 사용해 테이블에 샘플 데이터를 입력합니다.

mysql> insert into DemoTable1588 values(110,'Bob',78);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1588 values(101,'Sam',78);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1588 values(105,'Mike',78);
Query OK, 1 row affected (0.26 sec)

3. 저장된 데이터 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select * from DemoTable1588;

실행 결과는 다음과 같습니다.

+-----------+------------------+--------------+
| StudentId | StudentFirstName | StudentMarks |
+-----------+------------------+--------------+
|      110 | Bob             |          78 |
|      101 | Sam             |          78 |
|      105 | Mike            |          78 |
+-----------+------------------+--------------+
3 rows in set (0.00 sec)

4. 정렬 순서로 집계 함수 호출하기

이제 핵심인 정렬 순서를 적용한 집계 쿼리입니다. GROUP_CONCAT() 내부에 ORDER BYSEPARATOR 옵션을 지정하면 원하는 순서와 구분자로 문자열을 연결할 수 있습니다.

mysql> select group_concat(StudentFirstName order by StudentId separator '--') from DemoTable1588
    -> group by StudentMarks;

실행 결과는 다음과 같습니다.

+------------------------------------------------------------------+
| group_concat(StudentFirstName order by StudentId separator '--') |
+------------------------------------------------------------------+
| Sam--Mike--Bob                                                   |
+------------------------------------------------------------------+
1 row in set (0.04 sec)

결과 분석

출력 결과를 보면 학생 이름이 StudentId 오름차순(101 → 105 → 110)으로 정렬되어 'Sam--Mike--Bob' 형태로 출력된 것을 확인할 수 있습니다. 만약 SEPARATOR 옵션을 지정하지 않으면 기본 구분자인 콤마(,)가 사용됩니다.

이처럼 GROUP_CONCAT() 함수 안에서 ORDER BY 절을 사용하면 그룹화된 값들을 원하는 정렬 순서로 하나의 문자열로 합칠 수 있어, 목록 출력이나 CSV 형태의 데이터 변환 등 다양한 상황에서 유용하게 활용됩니다.