꺄르륵
[Oracle SQL Developer] 기초 X - 자동집계함수 본문
1. 자동집계함수(ROLLUP, CUBE)
1.1. ROLLUP(col1[,col2...])
1.1.1. col1로 정의된 컬럼을 기준으로 추가 집계 정보를 반환한다.
: col1은 SELECT 절에서 정의된 집계함수를 제외한 일반 컬럼을 사용한다.
: col1이 기술된 순서(오른쪽 -> 왼쪽) 레벨에 따른 집계 정보를 반환한다.
: 사용된 col이 n개이면 n+1개의 집계정보를 반환한다.(하위레벨 -> 상위레벨 순서)
예) 장바구니테이블에서 2005년도 5월 일자별 회원별 판매수량을 구하시오
--ROLLUP을 사용하지 않은 경우
SELECT TO_DATE(SUBSTR(CART_NO,1,8),'YYYY/MM/DD') 날짜,
CART_MEMBER 회원번호,
SUM(CART_QTY) 수량
FROM CART
WHERE SUBSTR(CART_NO,1,6) LIKE '200505%'
GROUP BY TO_DATE(SUBSTR(CART_NO,1,8),'YYYY/MM/DD'), CART_MEMBER
ORDER BY 1;
-- ROLLUP을 사용하면 전체 집계가 나온다.
SELECT TO_DATE(SUBSTR(CART_NO,1,8),'YYYY/MM/DD') 날짜,
CART_MEMBER 회원번호,
SUM(CART_QTY) 수량
FROM CART
WHERE SUBSTR(CART_NO,1,6) LIKE '200505%'
GROUP BY ROLLUP(TO_DATE(SUBSTR(CART_NO,1,8),'YYYY/MM/DD'), CART_MEMBER)
ORDER BY 1;
예) KOR_LOAN_STATUS 테이블에서 2013년도 지역별, 월별, 구분별 대출잔액을 조회하시오.
SELECT REGION 지역,
TO_CHAR(SUBSTR(PERIOD,5,2)) 월,
GUBUN 구분,
TO_CHAR(SUM(LOAN_JAN_AMT),'99,999,999.0') 대출잔액
FROM KOR_LOAN_STATUS
WHERE TO_CHAR(SUBSTR(PERIOD,1,4)) LIKE '2013%'
GROUP BY REGION, TO_CHAR(SUBSTR(PERIOD,5,2)), GUBUN
ORDER BY 2;
-- ROLLUP을 사용하여 집계함수를 적용한다.
CREATE OR REPLACE VIEW V_KOR AS -- VIEW 생성
SELECT REGION 지역,
EXTRACT(MONTH FROM TO_DATE(SUBSTR(PERIOD,5,2),'MM')) 월,
GUBUN 구분,
TO_CHAR(SUM(LOAN_JAN_AMT), '99,999,990.0') 대출잔액
FROM KOR_LOAN_STATUS
WHERE TO_CHAR(SUBSTR(PERIOD,1,4)) LIKE '2013%'
GROUP BY ROLLUP(REGION, EXTRACT(MONTH FROM TO_DATE(SUBSTR(PERIOD,5,2),'MM')) , GUBUN)
ORDER BY 1;
SELECT * FROM V_KOR;
1.2. CUBE(col1[,col2...])
1.2.1. col1로 정의된 컬럼을 기준으로 추가 집계 정보를 반환한다.
: col1은 SELECT 절에서 정의된 집계함수를 제외한 일반 컬럼을 사용한다.
: col1이 기술된 순서(오른쪽 -> 왼쪽) 레벨에 따른 집계 정보를 반환한다.
: 사용된 col의 가능한 모든 조합의 경우의 수만큼의 집계정보를 반환한다.(하위레벨 -> 상위레벨 순서)
예)
SELECT REGION 지역,
EXTRACT(MONTH FROM TO_DATE(SUBSTR(PERIOD,5,2),'MM')) 월,
GUBUN 구분,
TO_CHAR(SUM(LOAN_JAN_AMT), '99,999,990.0') 대출잔액
FROM KOR_LOAN_STATUS
WHERE TO_CHAR(SUBSTR(PERIOD,1,4)) LIKE '2012%'
GROUP BY CUBE(REGION, EXTRACT(MONTH FROM TO_DATE(SUBSTR(PERIOD,5,2),'MM')) , GUBUN)
ORDER BY 1;
'프로그래밍 > DB' 카테고리의 다른 글
[Oracle SQL Developer] 기초 XII - JOIN II (0) | 2019.10.24 |
---|---|
[Oracle SQL Developer] 기초 XI - JOIN 1 (0) | 2019.10.16 |
[Oracle SQL Developer] 기초 IX - 집계 함수 (0) | 2019.10.14 |
[Oracle SQL Developer] 기초 VIII - 변환 함수 (0) | 2019.10.14 |
[Oracle SQL Developer] 기초 VII - 날짜 함수 (0) | 2019.10.10 |