본문 바로가기

[오라클 레퍼런스 함수] GROUP_ID - 중복 그룹 구별 및 필터링

by ㅇㅍㅍ 2023. 8. 6.
[오라클 레퍼런스 함수] GROUP_ID - 중복 그룹 구별 및 필터링
728x90

GROUP_ID

 

구문

GROUP_ID( )

 

목적

GROUP_ID 함수는 GROUP BY 절로 생성된 중복 그룹들을 구별합니다. 이 함수는 쿼리 결과에서 중복 그룹을 필터링하는 데 유용합니다. GROUP_ID 함수는 Oracle NUMBER를 반환하여 중복 그룹을 고유하게 식별합니다. 이 함수는 GROUP BY 절이 포함된 SELECT 문에서만 사용할 수 있습니다.

특정 그룹에 n개의 중복이 존재하는 경우, GROUP_ID 함수는 0부터 n-1까지의 숫자를 반환합니다.

 

예제

다음 예제는 샘플 테이블 sh.countriessh.sales에서 수행된 쿼리의 중복된 co.country_region 그룹에 값 1을 할당합니다.

SELECT co.country_region, co.country_subregion,
       SUM(s.amount_sold) "Revenue", GROUP_ID() g
  FROM sales s, customers c, countries co
  WHERE s.cust_id = c.cust_id
    AND c.country_id = co.country_id
    AND s.time_id = '1-JAN-00'
    AND co.country_region IN ('Americas', 'Europe')
  GROUP BY GROUPING SETS ( (co.country_region, co.country_subregion),
                           (co.country_region, co.country_subregion) )
  ORDER BY co.country_region, co.country_subregion, "Revenue", g;

COUNTRY_REGION       COUNTRY_SUBREGION                 Revenue          G
-------------------- ------------------------------ ---------- ----------
Americas             Northern America                    944.6          0
Americas             Northern America                    944.6          1
Europe               Western Europe                     566.39          0
Europe               Western Europe                     566.39          1

 

다음과 같이 구문의 끝에 다음 HAVING 절을 추가하여 GROUP_ID < 1인 행만 반환되도록 처리하세요:

HAVING GROUP_ID() < 1

 


출처: 오라클 레퍼런스

원문 링크: Oracle GROUP_ID 함수 문서

 

반응형

댓글