Building value

Oracle SQL 기본 문법[GROUP BY.GROUPING] 본문

RDBMS/Oracle DB

Oracle SQL 기본 문법[GROUP BY.GROUPING]

developer_Michael 2023. 3. 14. 17:29
반응형

GROUPING 함수는 CUBE나 ROLLUP에서만 사용할 수 있습니다.

 

CUBE 연산자와 ROLLUP 연산자는 데이터를 다차원으로 집계하는 데 사용되며,

GROUPING 함수는 집계 결과에서 NULL 값을 가진 데이터를 식별하는 데 사용됩니다. 

따라서 GROUPING 함수는 CUBE나 ROLLUP을 사용한 집계 결과를 보완하는 데 사용됩니다.

 

SELECT DECODE(GROUPING(JOB),1,'ALL',JOB) JOB,
DECODE(GROUPING(DEPTNO),1,'ALL',DEPTNO) DEPTNO,
COUNT(*) COUNT_SAL,
AVG(SAL) AVG_SAL
FROM EMP
GROUP BY CUBE(JOB, DEPTNO);

위 쿼리에서 GROUPING 함수는 DECODE 함수와 함께 사용되었는데, 

CUBE 연산자로 GROUP BY 절을 작성한 결과 집계된 모든 결과를 반환하기 때문에 GROUPING 함수를 사용하여 

 

어떤 그룹에 대한 결과인지 구분합니다. 

위 코드에서는 JOB과 DEPTNO에 대해 CUBE 연산자를 사용하여 총 9개의 그룹이 생성되며, 

이를 GROUPING 함수와 DECODE 함수를 사용하여 구분합니다.

 

출력 결과

 

다음은 ROLLUP 연산자를 사용하는 예시 쿼리입니다.

 

SELECT DECODE(GROUPING(JOB),1,'ALL',JOB) JOB,
DECODE(GROUPING(DEPTNO),1,'ALL',DEPTNO) DEPTNO,
COUNT(*) COUNT_SAL,
AVG(SAL) AVG_SAL
FROM EMP
GROUP BY ROLLUP(JOB, DEPTNO);

위 쿼리에서도 CUBE 예시 코드와 동일하게 GROUPING 함수와 DECODE 함수를 사용하여 

 

그룹에 대한 결과를 구분합니다. 

ROLLUP 연산자를 사용하여 GROUP BY 절을 작성한 결과 집계된 모든 결과를 반환합니다. 

위 쿼리에서는 JOB과 DEPTNO에 대해 ROLLUP 연산자를 사용하여 총 5개의 그룹이 생성되며, 

이를 GROUPING 함수와 DECODE 함수를 사용하여 구분합니다.

 

출력 결과

 

 

이처럼 CUBE와 ROLLUP 연산자를 사용하여 GROUP BY 절을 작성할 때 GROUPING 함수와 함께 사용하면, 

결과를 보다 직관적이고 이해하기 쉽게 출력할 수 있습니다.

 

 

 

이처럼 CUBE와 ROLLUP 연산자를 사용하여 GROUP BY 절을 작성할 때 GROUPING 함수와 함께 사용하면, 

결과를 보다 직관적이고 이해하기 쉽게 출력할 수 있습니다.

반응형