728x90
GROUPING
구문
GROUPING(expr)
목적
GROUPING 함수는 슈퍼집계(superaggregate) 행과 일반적으로 그룹화된 행을 구별합니다. ROLLUP 및 CUBE와 같은 GROUP BY 확장은 모든 값의 집합을 null로 나타내는 슈퍼집계 행을 생성합니다. GROUPING 함수를 사용하여 슈퍼집계 행에서 모든 값의 집합을 나타내는 null과 일반 행의 null을 구분할 수 있습니다.
GROUPING 함수의 expr은 GROUP BY 절의 표현식 중 하나와 일치해야 합니다. 함수는 행의 expr 값이 모든 값의 집합을 나타내는 null인 경우 1을 반환하고, 그렇지 않으면 0을 반환합니다. GROUPING 함수가 반환하는 값의 데이터 유형은 Oracle NUMBER입니다. 이 용어에 대한 설명은 SELECT group_by_clause를 참조하십시오.
예제
다음 예제에서는 샘플 테이블 hr.departments와 hr.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 함수 문서
반응형
'코딩 > 오라클 함수' 카테고리의 다른 글
[오라클 레퍼런스 함수] HEXTORAW - 16진수 숫자를 raw 값으로 변환 (0) | 2023.08.06 |
---|---|
[오라클 레퍼런스 함수] GROUPING_ID - GROUPING 비트 벡터 반환 (0) | 2023.08.06 |
[오라클 레퍼런스 함수] GROUP_ID - 중복 그룹 구별 및 필터링 (0) | 2023.08.06 |
[오라클 레퍼런스 함수] GREATEST - 가장 큰 값 반환 (0) | 2023.08.06 |
[오라클 레퍼런스 함수] FROM_TZ - TIMESTAMP WITH TIME ZONE 값으로 변환 (0) | 2023.08.06 |
댓글