본문 바로가기

데이터베이스/ORACLE

[ORACLE] 부서별 차등 보너스 계산 / CASE, DECODE 활용

문제

10번 부서 급여의 0.3% , 20번부서 급여의 20%, 30번 부서 급여의 10%, 나머지 모든 부서 1%.

단, 소수점 절삭(TRUNCATE)

 

주의

GROUP BY는 그룹마다 결과가 1개의 행으로 나온다. 이 문제에서 사용하는 것이 아니다.

 

1. DECODE 활용

SELECT DEPTNO, ENAME, JOB, SAL, 
                    TRUNC(DECODE(DEPTNO, 10, SAL * 0.003, 20, SAL * 0.2, 30, SAL * 0.1, SAL * 0.01)) AS BONUS
FROM EMP
ORDER BY DEPTNO, BONUS DESC;

2. CASE 활용

SELECT DEPTNO, ENAME, JOB, SAL,
        CASE WHEN DEPTNO = 10 THEN TRUNC(SAL * 0.003)
             WHEN DEPTNO = 20 THEN TRUNC(SAL * 0.2)
             WHEN DEPTNO = 30 THEN TRUNC(SAL * 0.1)
             ELSE TRUNC(SAL * 0.01)
             END AS BONUS
FROM EMP
ORDER BY DEPTNO, BONUS DESC;