[SQL] 045. 데이터 분석 함수로 데이터를 가로로 출력하기
Updated:
초보자를 위한 SQL 200제 교재를 토대로 공부한 내용입니다.
오라클 SQL을 기반으로 합니다.
실습에 사용한 테이블은 정보문화사 홈페이지에서 받을 수 있습니다.
[예시]
LISTAGG() WITHIN GROUP
은 데이터를 가로로 출력하는 함수이다.
LISTAGG()
안에 컬럼과 구분자를 입력하며 WITHIN GROUP
다음에 정렬 기준을 입력한다.
다음은 DEPTNO(부서번호)별로 ENAME(사원이름)을 가로로 출력하는 예시이다.
-- LISTAGG(컬럼, 구분자) WITHIN GROUP (정렬)
SELECT DEPTNO,
LISTAGG(ENAME, ',') WITHIN GROUP (ORDER BY ENAME) AS 사원리스트
FROM EMP
GROUP BY DEPTNO;
[결과]
각 부서에 해당하는 사원의 이름이 콤마로 구분되어 가로로 출력되었다.
DEPTNO | 사원리스트 |
---|---|
10 | CLARK,KING,MILLER |
20 | ADAMS,FORD,JONES,SCOTT,SMITH |
30 | ALLEN,BLAKE,JAMES,MARTIN,TURNER,WARD |
[예시2]
다음은 응용 예시로 부서별 월급이 높은 사원 순서로 출력한다.
-- 응용 부서별로 월급이 높은 사원순으로 출력
SELECT DEPTNO,
LISTAGG(ENAME || '<' || SAL || '>','★') WITHIN GROUP (ORDER BY SAL DESC) AS 사원및월급리스트
FROM EMP
GROUP BY DEPTNO;
[결과2]
DEPTNO | 사원및월급리스트 |
---|---|
10 | KING<5000>★CLARK<2450>★MILLER<1300> |
20 | FORD<3000>★SCOTT<3000>★JONES<2975>★ADAMS<1100>★SMITH<800> |
30 | BLAKE<2850>★ALLEN<1600>★TURNER<1500>★MARTIN<1250>★WARD<1250>★JAMES<950> |
Leave a comment