아하
생활

생활꿀팁

대담한황로142
대담한황로142

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

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

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

구해 주세요

테이블 EMP

이름 NAME 급여 SAL

홍길동 10000000

김사랑 1300000

    55글자 더 채워주세요.
    4개의 답변이 있어요!
    • 하얀고슴도치236
      하얀고슴도치236

      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

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