본문 바로가기

Oracle/SQL

SQL 데이터 분석함수 - 집계결과 출력 Cube

집계결과가 맨 아래 : rollup

집계결과가 맨 위에 : cube

CUBE  = 결과값이 맨위출력

예제 : 

select nvl(job, '전체토탈'), sum(sal) 
from emp 
group by cube(job);

문제 : 위의 결과에서 NULL 값에 전체 토탈이라고 출력되게 하시오

select nvl(to_char(deptno), '전체토탈')as DEPTNO,
       sum(sal) 
from emp  
group by cube(deptno);

문제 245 : 직업, 직업별 인원수를 출력하는데 아래와 같이 맨 위에 전체토탈이 출력되게하시오

select nvl(job, '전체토탈')as JOB, count(*) 
from emp
group by cube(job);

→ 이미 JOB 이 문자이므로 NVL 함수 쓸때 TO_CHAR사용할 필요없다.

CUBE 함수에 컬럼을 여러개 사용할때

select deptno, job, sum(sal)
from emp 
group by cube(deptno, job);

→ 그룹핑된 결과가 4가지 나온다.

  1. deptno, job
  2. deptno
  3. 전체
  4. job ←— cube 는 rollup과 다르게 한가지가 더 출력 된다.

rollup과는 다르게 한가지 더 출력 되는 그룹핑된 컬럼은 제일 처음에 지웠던 컬럼입니다.