[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>

Tags:

Categories:

Updated:

Leave a comment