문제
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;
'데이터베이스 > ORACLE' 카테고리의 다른 글
[ORACLE] 날짜 포맷 'YY', 'RR' 차이점 (0) | 2020.05.29 |
---|---|
[ORACLE] Top-N Queries & Bottom-N Queries (0) | 2020.05.29 |
[ORACLE] CASE 조건문에서, 조건이 중복될 때 어떻게 되는가? (0) | 2020.05.29 |
[ORACLE] Embeded SQL 개발 절차(기능 검증 - 성능 검증 - host language에 작성) (0) | 2020.05.29 |
[ORACLE] 'Interactive SQL' VS 'Embeded SQL' (0) | 2020.05.28 |