All thing of the world!

Oracle GROUPING 설명 : 오라클 함수 본문

IT/Oracle DBMS

Oracle GROUPING 설명 : 오라클 함수

WorldSeeker 2021. 4. 6. 09:11

1. 함수의 목적 

   Oracle GROUPING은
GROUP BY의 확장형태인 ROLLUP과 CUBE등은 모든 값의 집합이 NULL로 표시되는 SUPERAGGREGATE행을 표시하는데, SUPERAGGREGATE행인지 아니면 일반 GROUP BY에 의한 행인지 구분할 수 있도록 한다.

2. 샘플을 통한 개념 퀵뷰

GROUPING() 함수의 결과값이 1이면 SUPERAGGREGATE행이다.
이러한 SUPERAGGREGATE값을 가지고 모든 값의 집합인 ALL DEPARTMENTS로 표시하도록 DECODE문을 사용했다.
ALL Jobs 마찬가지 원리로 구현했다.

SELECT
DECODE(
GROUPING(department_name), 1, 'ALL DEPARTMENTS', department_name)
AS department,
DECODE(GROUPING(job_id), 1, 'All Jobs', job_id) AS job,
COUNT(*) "Total Empl",
AVG(salary) * 12 "Average Sal"
FROM employees e, departments d
WHERE d.department_id = e.department_id
GROUP BY ROLLUP (department_name, job_id)
ORDER BY department, job;


3. 사용방법 


4. 함수 PARAMETER 설명

[expr]
평가할 컬럼을 입력하는 파라미터이다.
GROUP BY의 컬럼과 반드시 일치해야 한다.

반환값이 1이라면 SUPERAGGREGATE 컬럼이란 뜻이고, 0이라면 일반 GROUP BY에 의해 생성된 ROW라고 본다.
반환값은 숫자형이다.

5. 다양한 샘플표현

Comments