DataBase/Oracle

Oracle - DECODE, CASE 함수

jaycheol 2024. 8. 12. 22:04
반응형

 

DECODE -  값에 따라 반환값을 결정 할 수 있다.

 

직급에 따라 인상된 급여액을 가져온다.
CLERK : 10% SALESMAN : 15% PRESIDENT : 200% MANAGER : 5% ANALYST : 20%
SELECT empno, ename, job,
		decode(job, 'CLERK', sal*1.1,
					'SALESMAN', sal*1.15,
					'PRESIDENT', sal*3,
					'MANAGER', sal*1.05,
					'ANALYST', sal*1.2)
FROM emp;

이와같이 DECODE를 사용하여 해당 직무에 맞게 인상된 급여액을 가져 올 수 있다.

 

 

CASE -  조건에 따라 반환값을 결정 할 수 있다.

급여액별 등급을 가져온다.
1000미만 : c등급 1000이상 2000미만 : B등급 2000이상 : A등급

 

SELECT empno, ename, 
		CASE WHEN sal<1000 THEN 'C등급'
			 WHEN sal>=1000 AND sal<2000 THEN 'B등급'
			 WHEN sal>=2000 THEN 'A등급'
		END 
FROM emp;

이와같이 조건을 설정하여 조건에 맞는 값들을 가져올 수 있다. 

 

직원들의 급여를 다음과 같이 인상한다.
1000이하 : 100% 1000초과 2000미만 : 50% 2000이상 : 200%
SELECT empno, ename, 
		CASE WHEN sal<=1000 THEN sal*2
			 WHEN sal>1000 AND sal<=2000 THEN sal*0.5
			 WHEN sal>=2000 THEN sal*3
		END 
FROM emp;
반응형