-
Oracle - 서브쿼리(Sub query)DataBase/Oracle 2024. 8. 19. 22:46반응형
서브쿼리의 특징
- 서브쿼리 위치: 서브쿼리는 SELECT, FROM, WHERE, HAVING 절 등에 위치할 수 있습니다.
- 결과 반환: 서브쿼리는 단일 값, 단일 행 또는 여러 행의 결과를 반환할 수 있습니다.
- 메인 쿼리와의 관계: 서브쿼리는 메인 쿼리와 관련이 있거나 독립적으로 작동할 수 있습니다.
간단한 예시
다음은 직원 테이블에서 급여가 평균 급여보다 높은 직원들을 조회하는 예시입니다.
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');
반응형'DataBase > Oracle' 카테고리의 다른 글
Oracle - SET(UNION, UNION ALL, INTERSECT, MINUS) (0) 2024.08.21 Oracle - 결과가 하나 이상인 서브쿼리(IN, ANY, ALL) (0) 2024.08.20 Oracle - Self Join, Outer Join (0) 2024.08.15 Oracle - Join 문제와 함께 파해치 (0) 2024.08.14 Oracle - Having (0) 2024.08.13