본문 바로가기

[오라클 레퍼런스 함수] GROUPING - 슈퍼집계(superaggregate) 행 구별

by ㅇㅍㅍ 2023. 8. 6.
[오라클 레퍼런스 함수] GROUPING - 슈퍼집계(superaggregate) 행 구별
728x90

GROUPING

 

구문

GROUPING(expr)

 

목적

GROUPING 함수는 슈퍼집계(superaggregate) 행과 일반적으로 그룹화된 행을 구별합니다. ROLLUPCUBE와 같은 GROUP BY 확장은 모든 값의 집합을 null로 나타내는 슈퍼집계 행을 생성합니다. GROUPING 함수를 사용하여 슈퍼집계 행에서 모든 값의 집합을 나타내는 null과 일반 행의 null을 구분할 수 있습니다.

GROUPING 함수의 exprGROUP BY 절의 표현식 중 하나와 일치해야 합니다. 함수는 행의 expr 값이 모든 값의 집합을 나타내는 null인 경우 1을 반환하고, 그렇지 않으면 0을 반환합니다. GROUPING 함수가 반환하는 값의 데이터 유형은 Oracle NUMBER입니다. 이 용어에 대한 설명은 SELECT group_by_clause를 참조하십시오.

 

예제

다음 예제에서는 샘플 테이블 hr.departmentshr.employees를 사용합니다. GROUPING 함수가 1을 반환하면(테이블의 일반 행이 아닌 슈퍼집계 행을 나타내는 경우), "JOB" 열에 일반적으로 나타날 null 대신 "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;

DEPARTMENT                     JOB        Total Empl Average Sal
------------------------------ ---------- ---------- -----------
ALL DEPARTMENTS                All Jobs          106  77481.0566
Accounting                     AC_ACCOUNT          1       99600
Accounting                     AC_MGR              1      144096
Accounting                     All Jobs            2      121848
Administration                 AD_ASST             1       52800
Administration                 All Jobs            1       52800
Executive                      AD_PRES             1      288000
Executive                      AD_VP               2      204000
Executive                      All Jobs            3      232000
Finance                        All Jobs            6      103216
Finance                        FI_ACCOUNT          5       95040
. . .

 


출처: 오라클 레퍼런스

원문 링크: Oracle GROUPING 함수 문서

 

반응형

댓글