-
[MySQL] group_concat 함수 알아보기Database/MySQL 2024. 3. 8. 21:54728x90반응형
- 목차
group_concat ?
group_concat 함수는 MySQL 의 집계함수 중의 하나입니다.
집계함수란 Group By 문장과 함께 쓰여져 나열되는 값들을 하나의 값으로 축소시키는 역할을 합니다.
예를 들어서 List -> Item, Vector -> Scalar 와 같은 형식으로 Collection 타입의 값을 Single Item 값으로 변형할 수 있습니다.
대표적으로 Max, Sum, Avg, Reduce 등이 존재하죠.
Collection 의 여러 값들 중에서 최대, 최소, 평균, 합계 등을 계산하여 하나의 값으로 축소시킵니다.
group_concat 은 이러한 Aggregation Function 으로 사용됩니다.
동작 방식은 Collection 을 하나의 나열된 String 으로 반환합니다.
예를 들어, 아래의 예시와 같이 collection 변수에 할당된 여러 String Variable 들은 group_concat 에 의해서 하나의 String 으로 변형됩니다.
collection = ['Apple', 'Banana', 'Cocoa', 'Durian'] group_concated_result = 'Apple,Banana,Cocoa,Durian'
실습.
간단한 실습을 위해서 Table 하나를 생성합니다.
int 타입의 id 와 varchar 타입의 name 을 칼럼으로써 가지는 People 이라는 Table 입니다.
create table People (id int, name varchar(32));
동일한 name 을 가지는 3개의 Row 들을 생성합니다.
insert into People(id, name) values (1, 'Andy'), (2, 'Andy'), (3, 'Andy');
그리고 group_conat 을 적용하게 되면, 아래와 같이 "1,2,3" 이라는 문자열이 반환됩니다.
select group_concat(id) from People;
+------------------+ | group_concat(id) | +------------------+ | 1,2,3 | +------------------+ 1 row in set (0.01 sec)
group_concat 의 결과물은 하나의 문자열이기 때문에 upper 과 같은 문자열 처리 함수가 사용될 수 있습니다.
select upper(group_concat(name)) from People;
+---------------------------+ | upper(group_concat(name)) | +---------------------------+ | ANDY,ANDY,ANDY | +---------------------------+ 1 row in set (0.01 sec)
Separator, Delimiter 적용하기.
group_concat 은 합쳐지는 문자열들 사이에 Separator 를 적용합니다.
사용되는 기본적인 Separator 는 comma (,) 를 사용하며,
SEPARATOR 키워드를 적용하여 Separator 다른 문자열로 변경할 수 있습니다.
"|" 를 Separator 로써 적용하는 예문은 아래와 같습니다.
select group_concat(name SEPARATOR '|') from People; +----------------------------------+ | group_concat(name SEPARATOR '|') | +----------------------------------+ | Andy|Andy|Andy | +----------------------------------+ 1 row in set (0.00 sec)
반응형'Database > MySQL' 카테고리의 다른 글
[MySQL] foreign_key_checks 알아보기 (0) 2024.03.26