함수 | 설명 | 예시 |
GROUP BY | 그룹으로 묶어서 데이터를 집계할때 사용한다. | SELECT department_id, SUM(salary) FROM employees GROUP BY department_id ORDER BY department_id; -> GROUP으로 묶여져서 집계된다. |
HAVING | GROUP BY결과를 대상으로 다시 필터를 걸어 데이터를 추출할때 쓴다. |
SELECT period , region , SUM(loan_jan_amt) totl_jan FROM kor_loan_status WHERE period = '201311' GROUP BY period, region HAVING SUM(loan_jan_amt) >100000 ORDER BY period, region; -> HAVING절은 WHERE조건을 처리한 결과에 대해 GROUP BY를 수행 후 산출된 결과에 대해 다시 조건을 걸어 데이터를 걸러낸다 |
ROLLUP(exp1,ep2~~~) | exp로 명시한 표현식을 기준으로 집계한 결과로 추가적인 집계 정보를 보여준다. 명시한 표현식 수와 순서(오른쪽에서 왼쪽순으로)에 따라 레벨 별로 집계한 결과가 반환된다. 표현식 개수가 n개이면 n+1레벨까지 하위레벨에서 상위레벨 순으로 데이터가 집계된다. |
SELECT period , gubun , SUM(loan_jan_amt) totl_jan FROM kor_loan_status WHERE period LIKE '2013%' GROUP BY ROLLUP(period, gubun); ->조회 시 period, gubun를 첫번째로 period를 두번째로 마지막은 전체 합계가 나온다(2개를 명시했으니 3레벨임..) 만약 전체 합계를 제외 할 경우 GROUP exp1 , ROLLUP(exp2,exp3)로 한다고 하면 전체를 제외할수 있다. SELECT period, gubun, SUM(loan_jan_amt) totl_jan FROM kor_loan_status WHERE period LIKE '2013%' GROUP BY ROLLUP(period), gubun ; -> 이런 식으로 쿼리를 하면 period에 대한 레벨로 집계가 된다. |
CUBE (exp1,ep2~~~) | 명시한 표현식 개수에 따라 가능한 모든 조합별로 집계한 결과를 반환한다. CUBE는 2의 제곱 만큼 종류별로 집계가 된다. |
SELECT period , gubun , SUM(loan_jan_amt) totl_jan FROM kor_loan_status WHERE period LIKE '2013%' GROUP BY CUBE(period,gubun) ; ->조회할 경우 전체,gubun별,period별, period에 대한 sum값으로 총 4개가 집계가 된다. |
※ROLLUP과 CUBE 표현식 개수별 집계유형
표현식 | 집계함수 |
ROLLUP(exp1,exp2) | exp1+exp2 |
exp1 | |
전체 | |
GROUP BY exp1,ROLLUP(exp2,exp3) | exp1+(exp2+ exp 3) |
exp1+ exp2 | |
exp1 | |
GROUP BY ROLLUP(exp1),exp2 | exp2+ exp1 |
exp2 | |
CUBE(exp1,exp2) | exp1+ exp2 |
exp1 | |
exp2 | |
전체 | |
GROUP BY exp1, CUBE(exp2,exp3) | exp1+( exp2+ exp3) |
exp1+( exp2) | |
exp1+( exp 3) | |
exp1 |
'DB > ORACLE' 카테고리의 다른 글
17.[오라클]JOIN 관련 정리 (0) | 2024.02.07 |
---|---|
16.[오라클]집합연산자 정리 (0) | 2024.02.07 |
14.[오라클]집계함수 정리 (0) | 2024.02.05 |
13.[오라클]SQL함수 정리 (0) | 2024.01.28 |
12.[오라클]SQL문 관련 정리하기 (0) | 2024.01.21 |