오라클 쿼리 관련해서 질문 드립니다.
안녕하세요 급여 관련해서 쿼리 질문 드립니다.
홍길동의 급여에서 2000을 뺀 급여보다 적게 받은 사원의 이름과 급여을
구해 주세요
테이블 EMP
이름 NAME 급여 SAL
홍길동 10000000
김사랑 1300000
select name, sal
where sal < (select (sal-2000) from emp where name= '홍길동')
from emp
;
이런식으로 서브쿼리를 사용하시는게 가장 대중적인 방법입니다.
만약 홍길동의 급여가 변동이 없는 자료라면 그냥 하드코딩 해서 아래와 같은 형식으로 하시는게 더 빠르고 안정적이긴 합니다.
select name, sal
where sal < 10000000 - 2000
from emp
;
또한 찾아야하는 급여 자체가 고정이 된 경우 아래와 같이 바꾸는게 거기서 더 좋습니다.
select name, sal
where sal < 9998000
from emp
;
홍길동의 급여를 먼저 구해야 되겠네요.
쿼리를 두 번 써야 될 것 같지만, 서브쿼리로 한 번에 해결할 수 있습니다.
SELECT name, sal FROM emp WHERE sal < (SELECT sal - 2000 FROM emp WHERE name = '홍길동')이렇게 쿼리 안에 또 쓴 쿼리를 서브쿼리라고 합니다. (위 쿼리에서 SELECT가 두 번 쓰였죠?)
특히 서브쿼리 중에서도
WHERE에 오는 서브쿼리를 Nested Subquery,
FROM에 오는 서브쿼리를 Inline View,
SELECT에 오는 서브쿼리를 Scalar Subquery라고 합니다.안녕하세요 쿼리 짜는 방법은 여러가 있으니 이중에 참조 하셔서 하나
쓰시면 되겠네요
select name , sal from emp
where sal < ( select (sal -2000) from emp where name = '홍길동')
안녕하세요?
바로 쿼리문 알려드리겠습니다^^ 참고해서 수정하시면됩니다
select name, sal from EMP
where ((select sal from EMP where name= '홍길동') - 2000) > sal
한번 시도해보시기 바랍니다