Loading...

DB/Oracle / / 2022. 2. 10. 17:58

DB 35강. ROLL UP

반응형

PARTITION BY는 소계와 통계 값을

내주진 않는다.

 

이때는 ROLL UP을 사용해준다.

 

그룹별로 값을 내준다.

-- 부서별 통계
SELECT  deptno, sum(sal)
FROM emp
GROUP BY deptno;

이 쿼리의 결과에는 통계는 없고

소계만 나와있다.

 

-- 부서별 통계
SELECT deptno, sum(sal)
FROM emp
GROUP BY rollup(deptno);

GROUP BY rollup(deptno);

rollup안에 원하는 컬럼을 넣으면

전체 총계가 나온다.

 

 

SELECT deptno, ename, sum(sal)
FROM emp
GROUP BY rollup(deptno, ename);

rollup안에 2개의 컬럼이 들어가면

두 컬럼에 대한 rollup이 발생한다.

 

규칙 1. deptno, job으로 롤업 한다.

deptno와 job이 같은 레코드를 롤업 하여 합을 구한다.

 

규칙 2. deptno(첫 번째 인수)로 롤업 한다.

롤업 하여 부서별 소계를 구한다.

2번을 하기 위해 우리는 UNION ALL을 사용했었다.

소계를 구해서 테이블 중간에 끼워 넣을 수 없기 때문에

UNION ALL로 합쳐줬던 것이다.

 

규칙 3. 전체 통계를 구한다. 

 

rollup(A, B, C, D)

만약 rollup의 인수가 4개라면

ABCD 롤업 -> ABC 롤업 -> AB 롤업 -> A 롤업 -> 통계

순서가 된다.

 

 

 

 

[출처]

 

https://cafe.naver.com/metacoding

 

메타코딩 : 네이버 카페

코린이들의 궁금증

cafe.naver.com

 

메타 코딩 유튜브

https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9

 

메타코딩

문의사항 : getinthere@naver.com 인스타그램 : https://www.instagram.com/meta4pm 깃헙 : https://github.com/codingspecialist 유료강좌 : https://www.easyupclass.com

www.youtube.com

 

반응형