아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
대담한황로142
대담한황로14219.05.13

오라클 쿼리 관련해서 질문 드립니다.

안녕하세요 급여 관련해서 쿼리 질문 드립니다.

홍길동의 급여에서 2000을 뺀 급여보다 적게 받은 사원의 이름과 급여을

구해 주세요

테이블 EMP

이름 NAME 급여 SAL

홍길동 10000000

김사랑 1300000

55글자 더 채워주세요.
답변의 개수
4개의 답변이 있어요!
  • 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 = '홍길동')


  • 탈퇴한 사용자
    탈퇴한 사용자19.05.13

    안녕하세요?

    바로 쿼리문 알려드리겠습니다^^ 참고해서 수정하시면됩니다

    select name, sal from EMP

    where ((select sal from EMP where name= '홍길동') - 2000) > sal

    한번 시도해보시기 바랍니다