ROLLUP - 소계,합계 구하기
DB/ORACLE 2017. 5. 19. 12:00 |ROLLUP
롤업구문은 GROUP BY 절과 같이 사용된다.
GROUP BY절에 의해서 그룹지어진 집합 결과에 대해서 좀 더 상세한 정보를 얻을수 있다.
SELECT 절에 ROLLUP을 사용하면 데이터의 총계를 구할수 있다.
TEST_JOB 데이터로 예제를 만들어 보자
SELECT
*
FROM TEST_JOB
ORDER BY JOB;
TEST_JOB 조회시 결과
GROUP BY 를 사용해서 직업별로 급여 합계를 구해보자
SELECT
JOB
,SUM(SAL)
FROM TEST_JOB
GROUP BY JOB;
결과를 보면 JOB별 SAL 의 합계가 조회된다.
ROLLUP 을 사용해서 JOB별 SAL합계와 총계를 구해보자.
SELECT
JOB
,SUM(SAL)
FROM TEST_JOB
GROUP BY ROLLUP (JOB);
결과를 보면 급여합계의 총계가 추가되었다.
ROLLUP을 이용하여 부서별 SAL의 소계와 총계를 구해보자.
SELECT
DEPTNO
,JOB
,SUM(SAL)
FROM TEST_JOB
GROUP BY ROLLUP (DEPTNO,JOB);
결과
GROUPING()
소계,합계를 구분하고자 할때 GROUPING(컬럼) 또는 GROUPING_ID(컬럼1,컬럼2)를 사용한다.
GROUPING()함수는 해당 컬럼이 집합에 참여하지 않으면 1을 반환, 집계계산에 참여하면 0을 반환한다.
SELECT
DEPTNO
,JOB
,SUM(SAL)
,GROUPING(DEPTNO)
,GROUPING(JOB)
,GROUPING_ID(DEPTNO,JOB)
FROM TEST_JOB
GROUP BY ROLLUP (DEPTNO,JOB);
결과
'DB > ORACLE' 카테고리의 다른 글
oracle sequence 생성,조회 (0) | 2017.03.17 |
---|---|
oracle index (0) | 2017.01.19 |
PIVOT 사용 (0) | 2017.01.03 |
ALTER TABLE (0) | 2016.11.28 |