본문 바로가기
DataBase

MySQL ORACLE HIVE 그룹별 문자열 묶기 LISTAGG GROUP_CONCAT collect_set

by 제2의지니 2021. 10. 28.

그룹별로 문자열 묶는 방법 그룹별로 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

댓글