파게로그
group function 본문
ROLLUP
SELECT DECODE(deptno, NULL, '전체합계', deptno), SUM(sal)
FROM emp
GROUP BY ROLLUP(deptno);
SELECT deptno, job, SUM(sal)
FROM emp
GROUP BY ROLLUP(deptno, job); -- 부서별 합계 - 직업별 합계 - 전체합계. 순서에 따라서 결과가 달라짐
- GROUP BY의 칼럼에 대해서 subtotal을 만듦
- GROUP BY구에 칼럼이 2개 이상 오면, 순서에 따라서 결과가 달라짐
GROUPING
SELECT deptno, GROUPING(deptno), job, GROUPING(job), SUM(sal)
FROM emp
GROUP BY ROLLUP(deptno, job);
SELECT
deptno,
DECODE(GROUPING(deptno), 1, '전체합계') total_all, job,
DECODE(GROUPING(job), 1, '부서합계') total_dept, SUM(sal)
FROM emp
GROUP BY ROLLUP(deptno, job);
- ROLLUP, CUBE, GROUPING SETS에서 생성되는 합계값을 구분하기 위한 함수
- 계산된 합계에는 1, 그렇지 않은 합계에는 0 반환
GROUPING SETS
SELECT deptno, job, SUM(sal)
FROM emp
GROUP BY GROUPING SETS(deptno, job);
- GROUP BY에 나오는 칼럼의 순서와 관계없이 다양한 소계를 만듦
- GROUP BY에 나오는 칼럼의 순서와 관계없이 개별적으로 모두 처리
CUBE
SELECT deptno, job, SUM(sal)
FROM emp
GROUP BY CUBE(deptno, job);
- CUBE 함수에 제시한 칼럼에 대해서 결합 가능한, 즉 조합할 수 있는 모든 경우의 수를 조합하여 집계 계산
- 다차원 집계 제공
'콤퓨타 왕기초 > SQLD/JDBC/Oracle DB' 카테고리의 다른 글
table partition (0) | 2021.03.22 |
---|---|
window function (0) | 2021.03.22 |
subquery (0) | 2021.03.21 |
계층형 조회(CONNECT BY) (0) | 2021.03.21 |
join (0) | 2021.03.19 |
Comments