ROLLUP은 그룹별 산출한 결과값의 소계/누계를 구하는 함수이다.
GROUP BY와 함께 쓰이며 GROUP BY로 묶은 부분을 ROLLUP을 추가하여 () 괄호로 묶어 사용한다.
GROUP BY ROLLUP( [] );
DECODE는 자바의 Switch 문과 비슷하다고 생각하면 된다.
SELECT 문의 컬럼명에 쓰이며 다음과 같이 쓰인다.
DECODE (검사 할 조건 계산식(결과가 값으로 떨어져야 함), 값1, 처리할 식, 값2, 처리할 식, ..... , DEFAULT값(생략가능))
예제를 통해 실제로 어떻게 쓰이나 보자
--rollup --그룹별 산출한 결과값의 소계/누계를 구하는 함수 SELECT depart_no, commision, COUNT(*) FROM employees GROUP BY depart_no, commision; SELECT depart_no, commision, COUNT(*) FROM employees GROUP BY ROLLUP(depart_no, commision); -- GROUPING 함수를 통해 (null)을 제거할 수 있다. -- 실제 데이터와 집계 데이터를 구분하는 함수 -- 0 : 실제 데이터 -- 1 : 집계 데이터 SELECT GROUPING(depart_no), GROUPING(commision), COUNT(*) FROM employees GROUP BY ROLLUP(depart_no, commision); -- DECODE() -- 자바에서 switch 문과 유사한 선택 함수 -- DECODE(검사 할 조건 계산식(결과가 값으로 떨어져야 함), 값1, 처리할 식 1, 값2, 처리할 식 2 ...... , DEFAULT 값(생략 가능)) SELECT DECODE(GROUPING(depart_no), 0, depart_no, 1, ' ') 부서번호, DECODE(GROUPING(commision), 0, TO_CHAR(commision), 1, ' ') 커미션, COUNT(*) FROM employees GROUP BY ROLLUP(depart_no, commision);
'Oracle DB 11g > 02.활용, SQL' 카테고리의 다른 글
[DB]02-15.Oracle DB 숫자형 함수(ABS, CEIL, FLOOR, OMD, ROUND, TRUNC) (0) | 2018.10.12 |
---|---|
[DB]02-14.Oracle DB 날짜 함수(SYSDATE, SYSTIMESTAMP, ADD_MONTHS, MONTHS_BETWEEN, LAST_DAY, NEXT_DAY) (0) | 2018.10.12 |
[DB]02-13.Oracle DB 문자형 함수(Char Function) (0) | 2018.10.12 |
[DB]02-12.Oracle DB 집계함수(COUNT, MAX, MIN, AVG, ROUND, SUM) (0) | 2018.10.12 |
[DB]02-11.Oracle DB 시퀀스(Sequence) (0) | 2018.10.08 |