728x90
GROUPING_ID
구문
GROUPING_ID(expr [, expr ]...)
목적
GROUPING_ID 함수는 행과 연관된 GROUPING 비트 벡터에 해당하는 숫자를 반환합니다. GROUPING_ID 함수는 ROLLUP 또는 CUBE와 같은 GROUP BY 확장과 GROUPING 함수를 포함하는 SELECT 문에서만 사용할 수 있습니다. 많은 GROUP BY 표현식이 있는 쿼리에서 특정 행의 GROUP BY 레벨을 결정하려면 많은 GROUPING 함수가 필요하며, 이로 인해 복잡한 SQL이 발생할 수 있습니다. 이러한 경우 GROUPING_ID 함수가 유용합니다.
GROUPING_ID 함수는 여러 개의 GROUPING 함수 결과를 비트 벡터(1과 0으로 이루어진 문자열)로 연결하는 기능적으로 동일합니다. GROUPING_ID를 사용하면 여러 개의 GROUPING 함수를 사용할 필요가 없어지며, 행 필터링 조건을 더 쉽게 표현할 수 있습니다. GROUPING_ID를 사용하면 GROUPING_ID = n과 같은 단일 조건으로 원하는 행을 식별할 수 있습니다. 이 함수는 특히 하나의 테이블에 여러 수준의 집계를 저장할 때 유용합니다.
예제
다음 예제는 샘플 테이블 sh.sales의 쿼리에서 grouping ID를 추출하는 방법을 보여줍니다.
SELECT channel_id, promo_id, sum(amount_sold) s_sales,
GROUPING(channel_id) gc,
GROUPING(promo_id) gp,
GROUPING_ID(channel_id, promo_id) gcp,
GROUPING_ID(promo_id, channel_id) gpc
FROM sales
WHERE promo_id > 496
GROUP BY CUBE(channel_id, promo_id)
ORDER BY channel_id, promo_id, s_sales, gc;
CHANNEL_ID PROMO_ID S_SALES GC GP GCP GPC
---------- ---------- ---------- ---------- ---------- ---------- ----------
2 999 25797563.2 0 0 0 0
2 25797563.2 0 1 1 2
3 999 55336945.1 0 0 0 0
3 55336945.1 0 1 1 2
4 999 13370012.5 0 0 0 0
4 13370012.5 0 1 1 2
999 94504520.8 1 0 2 1
94504520.8 1 1 3 3
출처: 오라클 레퍼런스
원문 링크: Oracle GROUPING_ID 함수 문서
반응형
'코딩 > 오라클 함수' 카테고리의 다른 글
[오라클 레퍼런스 함수] INITCAP - 단어 첫 글자 대문자, 나머지 소문자로 변환 (0) | 2023.08.06 |
---|---|
[오라클 레퍼런스 함수] HEXTORAW - 16진수 숫자를 raw 값으로 변환 (0) | 2023.08.06 |
[오라클 레퍼런스 함수] GROUPING - 슈퍼집계(superaggregate) 행 구별 (0) | 2023.08.06 |
[오라클 레퍼런스 함수] GROUP_ID - 중복 그룹 구별 및 필터링 (0) | 2023.08.06 |
[오라클 레퍼런스 함수] GREATEST - 가장 큰 값 반환 (0) | 2023.08.06 |
댓글