[Oracle] 분석함수, 윈도함수 - GROUPING SETS ( ), LISTAGG( ), PIVOT( ), UNPIVOT( ) 함수
GROUPING SETS( ) - 그룹핑 조건이 여러 개일 경우 유용하게 사용됨 - 하나의 테이블에 대한 여러 가지 그룹 함수가 사용될 경우 해당 함수를 사용하는 것이 좋음 - 예시. 학년별, 학과별 인원수와 키, 몸무게 각각의 합계 동시 출력 SELECT grade, deptn01, COUNT(*), SUM(height), SUM(weight) FROM STUDENT GROUP BY grouping sets (grade, deptn01) ORDER BY grade, deptn01; LISTAGG( ) 함수 - Oracle 11g에서 추가된 함수 - 일정 기준과 구분자를 통해 데이터가 한 줄로 연결되어 출력됨 - LISTAGG( 컬럼 이름, '구분자' ) WITHIN GROUP ( ORDER BY 컬럼명..
[Oracle] 분석함수, 윈도함수 - CUBE (소계와 전체 합계 출력)
서론 CUBE( ) : 각 소계와 전체 총계 출력 - 전체 합계까지 보여주기에 집계 컬럼들이 가질 수 있는 모든 경우에 대해 소계(소그룹)을 생성해야 하기에 ROLLUP에 비해 시스템 리소스를 더 사용함 - 컬럼이 N개 일 때, 2^N승의 소계(소그룹) 생성 - 모든 경우에 대한 소계를 구하기에 순서가 바뀌어도 데이터는 같음 ( ROLLUP은 순서 중요 ) - 예제. 부서별 평균 급여와 사원 수, 직급별 평균 급여와 사원 수, 부서와 직급별 평균 급여와 사원 수, 전체 평균 월 급여와 사원 수를 구하라. SELECT deptno, job, ROUND( AVG(NVL(sal, 0)), 1) "avg_sal", COUNT(*) "cnt_emp" FROM emp GROUP BY CUBE(deptno, job)..