그룹별로 문자열 묶는 방법 그룹별로 group by 하여 다른 특정 컬럼 문자열을 묶어서 나타내고 싶을 때 사용하는 함수를 mysql, oracle, hive 데이터 베이스별로 정리
- 테이블 예제
- 테이블 : custuer_grade
grade | custumer_id |
gold | park123 |
sliver | kim124 |
sliver | lee777 |
gold | han909 |
bronze | jee333 |
- 원하는 결과
grade | custumer_id |
gold | park123,han909 |
sliver | kim124,lee777 |
bronze | jee333 |
- MySQL
문법 : GROUP_CONCAT(column ORDER BY column SEPERATOR 구분자) ~ group by(column)
SELECT
grade, GROUP_CONCAT(custuer order by custuer, ",")
FROM
custuer_grade
GROUP BY
grade
- Oracle
문법 : LISTAGG(column, 구분자) within group(order by column)
SELECT
grade, LISTAGG(custuer, ",") within group(order by custuer)
FROM
custuer_grade
GROUP BY
grade
- hive
문법 : CONCAT_WS(',', collect_set(column))
SELECT
grade, CONCAT_WS(',', collect_set(custuer))
FROM
custuer_grade
GROUP BY
grade
* 하이브에서 return 형태가 list 형태인 것 ex : ["kim124", "lee777"]
문법 : collect_set(column)
- 중복값 제거
문법 : collect_list(column)
- 중복값 나타내줌
'DataBase' 카테고리의 다른 글
[Oracle] 오라클 계층형 쿼리 (0) | 2021.11.10 |
---|---|
MySQL Data truncated for column 해결 방법 (0) | 2021.11.02 |
댓글