ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Oracle - 서브쿼리(Sub query)
    DataBase/Oracle 2024. 8. 19. 22:46
    반응형

    서브쿼리의 특징

    1. 서브쿼리 위치: 서브쿼리는 SELECT, FROM, WHERE, HAVING 절 등에 위치할 수 있습니다.
    2. 결과 반환: 서브쿼리는 단일 값, 단일 행 또는 여러 행의 결과를 반환할 수 있습니다.
    3. 메인 쿼리와의 관계: 서브쿼리는 메인 쿼리와 관련이 있거나 독립적으로 작동할 수 있습니다.

     

    간단한 예시

    다음은 직원 테이블에서 급여가 평균 급여보다 높은 직원들을 조회하는 예시입니다.

    SELECT employee_name, salary
    FROM employees
    WHERE salary > (SELECT AVG(salary) FROM employees);

     

     

    SCOTT 사원이 근무하고 있는 부서의 이름을 가져온다.
    SELECT dname
    FROM DEPT d 
    WHERE deptno = (SELECT deptno 
    				FROM emp 
    				WHERE ename = 'SCOTT');

     

     

    SMITH와 같은 부서에 근무하고 있는 사원들의 사원번호, 이름, 급여액, 부서이름을 가져온다.
    SELECT e.deptno, e.ename, e.sal, d.DNAME 
    FROM emp e, DEPT d 
    WHERE e.DEPTNO = d.DEPTNO AND e.deptno =(SELECT DEPTNO
    					FROM emp
    					WHERE ename = 'SMITH');

     

     

    MARTIN과 같은 직무를 가지고 있는 사원들의 사원번호, 이름, 직무를 가져온다.
    SELECT DEPTNO, ENAME , JOB  
    FROM EMP e 
    WHERE e.JOB = (SELECT JOB
    		FROM emp
    		WHERE ENAME= 'MARTIN');

     

     

    ALLEN과 같은 직속상관을 가진 사원들의 사원번호, 이름, 직속상관이름을 가져온다.
    SELECT e.EMPNO, e.ENAME, e2.ENAME 
    FROM EMP e, EMP e2 
    WHERE e.MGR = e2.EMPNO AND e.MGR = (SELECT MGR 
    					FROM Emp
    					WHERE ename='ALLEN');

     

     

    WARD와 같은 부서에 근무하고 있는 사원들의 사원번호, 이름, 부서번호를 가져온다.
    SELECT empno, ename, deptno
    FROM emp
    WHERE deptno = (SELECT DEPTNO
    		FROM EMP
    		WHERE ENAME='WARD');

     

     

    SALESMAN의 평균 급여보다 많이 받는 사원들의 사원번호, 이름, 급여를 가져온다.
    SELECT empno, ENAME , SAL  
    FROM emp
    WHERE sal > (SELECT avg(sal)
    		FROM emp
    		WHERE job='SALESMAN');

     

     

    DALLAS지역에 근무하는 사원들의 평균 급여를 가져온다.
    SELECT TRUNC( avg(sal))
    FROM emp
    WHERE deptno = (SELECT DEPTNO
    		FROM dept
    		WHERE loc = 'DALLAS');

     

    반응형

    댓글

Designed by Tistory.