오라클에서 GROUPING 함수는 ROLLUP, CUBE, GROUPING SETS과 같은 그룹함수들을 이용해 소계나 집계를 구하는 통계식에 자주 사용된다. 그 이유는 GROUPIING과 GROUPING_ID를 이용하면 테이블의 데이터들의 날것인지, 합계인지 소계인지를 이진법으로 반환해 주기 때문이다.
둘의 차이는 크게 없다. GROUPING은 컬럼을 하나만 지정할 수 있고, GROUPING_ID는 여러개의 컬럼을 지정할 수 있다.
SELECT COLUM1, COLUM2, COUNT(COLUM3)
FROM TABLE
GROUP BY ROLLUP(COLUM1, COLUM2)
HAVING GROUPING(COLUM1) = 0 --9으로 조건을 걸면 총계가 보이지 않고, 1로 저건을 걸면 소계가 보이지 않는다.
SELECT COLUM1, COLUM2, COUNT(COLUM3)
FROM TABLE
GROUP BY ROLLUP(COLUM1, COLUM2)
HAVING GROUPING(COLUM1, COLUM2) = 0 --COLUM여러 개를 지정할 수 있다.