23.12.08 13:29 작성
·
273
·
수정됨
0
16강 case문 사용하는 마지막 문제에서
-직원들의 급여를 다음과 같이 인상한다.
-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;
이렇게 알려주셨는데 1000 초과 2000 미만이면 급여 50% 인상이면
select empno, ename,
case when sal<=1000 then sal*2
when sal>1000 and sal<=2000 then sal*1.5
when sal>=2000 then sal*3
end
from emp;
코드가 이렇게 되어야 하는거 아닌가요?
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다.
해당 질문에 대한 답변은 1000 초과 2000 미만인 직원의 급여를 50% 인상한다는 요구 사항에 대해 문의하셨군요. 제시해 주신 코드에서 급여 계산 부분에 오류가 있습니다. ‘급여를 50% 인상한다’는 말은 현재 급여에 급여의 50%를 더한다는 의미이므로, 급여를 1.5배 해야 올바른 계산이 됩니다. 따라서 올바른 쿼리문은 다음과 같습니다.
select empno, ename,
case when sal <= 1000 then sal * 2 -- 급여가 1000 이하인 경우 100%(2배) 인상
when sal > 1000 and sal < 2000 then sal * 1.5 -- 급여가 1000 초과 2000 미만인 경우 50% 인상
when sal >= 2000 then sal * 2 -- 급여가 2000 이상인 경우 100%(2배) 인상
end
from emp;
이 쿼리문은 각 조건에 맞게 급여가 인상된 결과를 얻기 위한 것입니다. hjryu님의 질문을 바탕으로 조건에 맞는 올바른 계산 방식을 반영했습니다.