본문 바로가기
오라클 게시판/오라클 함수

[오라클 함수] GROUPING_ID 함수

by 기서무나구물 2018. 11. 20.

포스팅 목차

    o GROUPING_ID

     


    문법

     

    grouping_id::=

     


    목적 

    GROUPING_ID함수는 행과 관련되는 GROUPING 비트 벡터(bit vector)에 대응하는 수치를 반환한다.

    GROUPING_ID함수는 행과 관련된 GROUPING 비트 벡터에 대응하는 수치를 반환한다. GROUPING_ID는 ROLLUP, CUBE, GROUPING함수와 같은 GROUP BY 확장 기능을 포함한 SELECT문장에서 적용할 수 있다. 많은 GROUP BY 표현을 가지는 쿼리에서, 많은 GROUPING함수를 필요로 하는 특정한 행의 GROUP BY 레벨을 지정하기 위해서는 복장한 SQL이 요구된다. GROUPING_ID는 이런 경우 유용하다.

    GROUPING_ID함수는 다수의 GROUPING함수의 결과와 비트 벡터(1과 0의 문자열)를 연결하는 것과 동일하다. GROUPING_ID를 이용하여서 다수의 GROUPING함수를 사용하지 않고서, 표현하기 위한 행의 필터 조건이 간단해진다. 행 필터링은 원하는 행이 GROUPING_ID=n의 단일 조건으로 정의될 수 있어서 더 쉬워진다. 함수는 단일 테이블에서 다수의 집계의 레벨을 저장할 때 유용하다.

     


    예제

    다음 예제는 샘플 테이블 sh.sales의 쿼리로부터 그룹핑 ID를 추출하는 방법을 보여준다.

    Oracle Program.
    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);

     

    Results
    C   PROMO_ID    S_SALES         GC         GP        GCP        GPC
    - ---------- ---------- ---------- ---------- ---------- ----------
    C        497   26094.35          0          0          0          0
    C        498    22272.4          0          0          0          0
    C        499    19616.8          0          0          0          0
    C       9999   87781668          0          0          0          0
    C            87849651.6          0          1          1          2
    I        497    50325.8          0          0          0          0
    I        498    52215.4          0          0          0          0
    I        499   58445.85          0          0          0          0
    I       9999  169497409          0          0          0          0
    I             169658396          0          1          1          2
    P        497   31141.75          0          0          0          0
    P        498    46942.8          0          0          0          0
    P        499      24156          0          0          0          0
    P       9999   70890248          0          0          0          0
    P            70992488.6          0          1          1          2
    S        497  110629.75          0          0          0          0
    S        498   82937.25          0          0          0          0
    S        499   80999.15          0          0          0          0
    S       9999  267205791          0          0          0          0
    S             267480357          0          1          1          2
    T        497     8319.6          0          0          0          0
    T        498    5347.65          0          0          0          0
    T        499      19781          0          0          0          0
    T       9999   28095689          0          0          0          0
    T            28129137.3          0          1          1          2
             497  226511.25          1          0          2          1
             498   209715.5          1          0          2          1
             499   202998.8          1          0          2          1
            9999  623470805          1          0          2          1
                  624110031          1          1          3          3

     

      --------------------------------------------  

    오라클 SQL 함수(Oracle SQL Function) 목록 리스트 링크

     

    [SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE] SQL EMP 예제로 만나는 테이블 데이터 처리 방법 리스트 링크
    반응형

    댓글