[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)..
[Oracle] SQL 복수행 함수 (그룹 함수) - GROUP BY, HAVING, ROLLUP
GROUP BY 절 - 그룹으로 묶기 위함 - 만약 그룹 조건이 여러 개일 경우 GROUP BY 절에 이어서 작성하면 됨 예시 1) 부서별 월급 평균을 구하라. SELECT DEPTNO, AVG(NVL(sal, 0)) FROM emp GROUP BY DEPTNO; 예시 2) 부서와 직업별 월급의 평균을 구하라. (단, 부서 번호와 직업에 따라 오름차순으로 정렬하라) SELECT deptno, job, AVG(NVL(sal, 0)) "AVG" FROM emp GROUP BY deptno, job ORDER BY 1, 2; - 주의사항 SELECT 절에 사용된 그룹 함수 이외 컬럼이나 표현식은 반드시 GROUP BY 절에 사용되어야 함. 한 마디로 그룹핑 대상이 아닌 컬럼을 SELECT 절에 작성해서는 안 ..