• 카테고리

    질문 & 답변
  • 세부 분야

    데이터베이스

  • 해결 여부

    미해결

16강 마지막 문제 질문

23.12.08 13:29 작성 23.12.11 08:34 수정 조회수 172

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

hjryu님의 프로필

hjryu

질문자

2023.12.11

확인했습니다. 감사합니다 !

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.12.10

안녕하세요, 인프런 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님의 질문을 바탕으로 조건에 맞는 올바른 계산 방식을 반영했습니다.