[SQL] DECODE, CASE 함수예제

정은아·2022년 8월 26일
0

Q. 직급에 따라 급여를 인상합니다. 직급이 ANALYST 인 사원은 5%인상
Salesman 10%
MANAGER 15%
CLERK 20%인상한 금액 출력

select ename,sal,job, decode (job,'ANALYST',sal*1.05,
 'SALESMAN',sal*1.10, 'MANAGER',sal*1.15, 'CLERK',sal*1.20,
 sal) as "인상된 월급"
 from emp;  

Q. 이름 글자수에 따라 월급을 인상합니다.
4글자 10% ,5글자 20% , 6글자 30% 인상한 결과를 작성하세요

select ename,sal,decode(length(ename),4,sal*1.05,
 5,sal*1.20,  6,sal*1.30, sal)as "인상된 월급"
 from emp;  

Q. 부서 번호에 해당하는 부서명을 구하는 쿼리문을 작성하세요

 SELECT ename, deptno,
 case when deptno = 10 then 'ACCOUNTING'
when deptno = 20 then 'RESEARCH'
when deptno = 30 then 'SALES'
when deptno = 40 then 'OPERATIONS'
else 'default'
end as dname
from emp;

Q. 직급에 따라 급여를 인상합니다. 직급이 'ANALYST'인 사원은 5%인상
SALESMAN 10% , MANAGER 15% , CLERK 20%인상한 금액을 출력하시오.

SELECT ename, job, sal, 
case when job='ANALYST' then sal*1.05
when job='SALESMAN' then sal*1.10 when job='MANEGER' 
then sal*1.15 when job='CLERK' then sal*1.20  
else sal end as "인상된 금액" from emp;

Q. 이름 글자수에 따라 월급을 인상합니다.
4글자 10% , 5글자 20% , 6글자 30% 인상한 결과를 작성하세요

select ename,length(ename), job, sal, 
case when length(ename)=4 then sal*1.10 
when length(ename)=5 then sal*1.20 
when length(ename)=6 then sal*1.30 else sal 
end as "UP SAL" 
from emp;

Q. 직급이 MANAGER인 사람 중에 부서 번호가 10이면 'NEW YORK', 20이면 'Dallas'그 외는 'Unknown'으로 나오게 하시오.

select ename,job, deptno, 
case when deptno = 10 then 'NEW YORK' 
when deptno = 20 then 'Dallas' 
else 'Unknown' end as "근무지" from emp where job = 'MANAGER';                 
//then'ㅁ' ㅁ안에 들어가는 문자는 대소문자가 구분된다  
ex.then 'Dallas' => 출력 Dallas             
     
select ename,job, deptno, 
case when deptno = 10 then 'NEW YORK' 
when deptno = 20 then 'Dallas' 
end as "근무지" from emp where job = 'MANAGER'; 

//만약 else를 쓰지 않는다면 조건에 맞지 않는
조건의 없는 항목은 null값이 출력된다           
profile
꾸준함의 가치를 믿는 개발자

0개의 댓글