[SQL] 분석함수 ROLLUP

·2025년 7월 4일

SQL

목록 보기
67/126

예제 답

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

문제1. 위의 결과를 다시 출력하는데 아래와 같이 결과를 출력하시오

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

null값을 '전체토탈'로 바꿔줌


문제2. 부서번호, 부서번호별 토탈월급을 출력하는데 다음과 같이 맨 밑에 전체 토탈월급을 출력하시오

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

💡
deptno --> 숫자
'전체토탈:' --> 문자 이기 때문에
to_char(deptno)로 바꿔줘야됨


문제3. 위의 결과를 다시 출력하는데 토탈월급이 나올때 천단위를 부여하시오

select nvl(to_char(deptno), '전체토탈:') as deptno,
		to_char(sum(sal), '999,999') as 토탈월급
 from emp
 group by rollup(deptno);

문제6. (SQLP 주관식 시험 대비 문제) 부서번호, 부서번호별 토탈월급을 출력하는데 가로로 출력되게하시오

select sum(decode(deptno, 10, sal, null)) "10",
       sum(decode(deptno, 20, sal, null)) "20",
       sum(decode(deptno, 30, sal, null)) "30"
 from emp;

문제7. (SQLP 주관식 시험 대비 문제) 직업, 부서번호, 직업별 부서번호별 토탈월급을 출력하는데 가로로 출력하시오

select  job, 
        sum( decode(deptno, 10, sal, null) ) as "10",
        sum( decode(deptno, 20, sal, null) ) as "20",
        sum( decode(deptno, 30, sal, null) ) as "30"
from emp
group by job;

문제8. (SQLP 주관식 시험 대비 문제) 위의 결과를 다시 출력하는데 옆에 토탈값 나오로 아래 토탈값 나오게 하시오

select job,
       sum(decode(deptno, 10, sal, null)) "10",
       sum(decode(deptno, 20, sal, null)) "20",
       sum(decode(deptno, 30, sal, null)) "30",
       sum(sal)
 from emp
 group by rollup(job);

문제9. 부서번호, 직업, 부서번호별 직업별 토탈월급을 출력하는데 세로로 출력하시오!

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

문제10. 위의 결과를 다시 출력하는데 다음과 같이 집계결과가 중간중간 나오게하시오

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

💡 rollup(deptno, job) 의 집계결과는?
1. deptno, job 별 토탈월급
2. deptno 별 토탈월급
3. 전체 토탈월급

문제11. (SQLP 기출문제) 다음과 같이 결과를 출력하시오.

10	CLERK	     1300
10	MANAGER	   2450
10	PRESIDENT	 5000
10  부서토탈:   8750
20	ANALYST	   6000
20	CLERK	     1900
20	MANAGER	   2975
20	부서토탈:   10875
30	CLERK    	  950
30	MANAGER	   2850
30	SALESMAN	 5600
30	부서토탈:   9400
    전체토탈:  29025



select deptno, decode(deptno, 10, nvl(job, '부서토탈:'),
                              20, nvl(job, '부서토탈:'),
                              30, nvl(job, '부서토탈:'),
                                  nvl(job, '전체토탈:')) as job, sum(sal)
 from emp
 group by rollup(deptno, job)
 order by deptno, job;

0개의 댓글