본문 바로가기

[오라클 레퍼런스 함수] GROUPING_ID - GROUPING 비트 벡터 반환

by ㅇㅍㅍ 2023. 8. 6.
[오라클 레퍼런스 함수] GROUPING_ID - GROUPING 비트 벡터 반환
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 함수 문서

 

반응형

댓글