라일락 꽃이 피는 날

[Oracle] 데이터 분석 함수 4 - 집계 결과 출력 본문

프로그래밍/Oracle

[Oracle] 데이터 분석 함수 4 - 집계 결과 출력

eunki 2022. 5. 31. 17:32
728x90

데이터 분석 함수

  • rollup : 전체 집계를 아래쪽에 출력
  • cube : 전체 집계를 위쪽에 출력
  • grouping sets : 원하는 집계 결과를 선택해서 출력

 

 

 

 

예제 1. 직업, 직업 별 토탈 월급을 출력하는데, 전체 집계를 아래쪽에 출력

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

 

 

 

예제 2. 나이, 나이 별 인원 수를 출력하는데, 맨 밑에 전체 인원 수를 출력

select nvl(to_char(age), '전체인원수:'), count(*)
    from emp15
    group by rollup(age);

 

 

 

예제 3. 부서 번호, 직업과 부서 번호 별, 직업 별 토탈 월급을 출력

select deptno, job, sum(sal)
    from emp
    group by rollup(deptno, job)
    order by 1;

rollup 함수 안의 (컬럼의 개수 + 1)개 만큼 그룹핑된 결과가 나온다.

  1. deptno, job : 부서 번호 별, 직업 별 토탈 월급
  2. deptno : 부서 번호 별 토탈 월급
  3. 전체 : 전체 토탈 월급

 

 

 

예제 4. 직업, 직업 별 토탈 월급을 출력하는데, 전체 토탈 월급을 맨 위쪽에 출력

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

 

 

 

예제 5. 부서 번호, 부서 번호 별, 전체 토탈 월급을 출력

select deptno, sum(sal)
    from emp
    group by grouping sets((deptno), ());

grouping sets (그룹핑 할 컬럼 기술)

grouping sets((deptno), ()) : 부서 번호 별, 전체 토탈 월급

grouping sets((deptno)) : 부서 번호 별 토탈 월급

 

 

 

예제 6. 예제 3을 grouping sets를 이용하여 출력

select deptno, job, sum(sal)
    from emp
    group by grouping sets((deptno, job), (deptno), ())
    order by 1;
728x90