1) 단일행(단일열) 서브쿼리
2) 다중행(단일열) 서브쿼리
3) 다중열 서브쿼리
4) 다중행 다중열 서브쿼리
예시) 노옹철 사원의 급여보다 많이 받는 직원의
사번, 이름, 부서명, 직급명, 급여 조회
SELCT EMP_ID , EMP_NAME , DEPT_TITLE , JOB_NAME , SALARY FROM EMPLOYEE NATURAL JOIN LEFT JOIN DEPARTMENT ON (DEPT_CODE = DEPT_ID) WHERE SALARY > (SELECT SALARY FROM EMPLOYEE WHERE EMP_NAME='노옹철');
예시)
차장 직급의 급여 중 가장 큰 값보다 많이 받는 과장 직급의 직원의
사번, 이름, 직급, 급여 조회
SELECT EMP_ID , EMP_NAME, JOB_NAME , SALARY FROM EMPLOYEE NATURAL JOIN JOB WHERE JOB_NAME = '과장' AND SALARY >ALL (SELECT SALARY FROM EMPLOYEE JOIN JOB USING(JOB_CODE) WHERE JOB_NAME = '차장');
예시)
2000년도에 입사한 사원의 부서와 직급이 같은 사원의
사번, 이름, 부서코드, 직급코드, 입사일 조회
SELECT EMP_ID , EMP_NAME , DEPT_CODE , JOB_CODE , HIRE_DATE FROM EMPLOYEE WHERE (DEPT_CODE , JOB_CODE) = (SELECT DEPT_CODE , JOB_CODE FROM EMPLOYEE WHERE EXTRACT (YEAR FROM HIRE_DATE) = 2000);
예시)
본인이 소속된 직급의 평균 급여를 받고 있는 직원의
사번, 이름, 직급코드, 급여 조회
(단, 급여와 급여 평균은 만원단위로 계산)
SELECT EMP_ID , EMP_NAME , JOB_CODE , SALARY FROM EMPLOYEE WHERE (JOB_CODE , SALARY) IN (SELECT JOB_CODE , TRUNC(AVG(SALARY), -4) FROM EMPLOYEE GROUP BY JOB_CODE);