상관 서브 쿼리

gotcha!!·2023년 1월 19일
0

DB

목록 보기
8/9

상(호연)관 서브쿼리

상관 쿼리는 메인쿼리가 사용하는 테이블 값을 서브쿼리가 이용해서 결과를 만든다.
메인쿼리의 테이블값이 변경되면 서브쿼리의 결과값도 바뀌게 되는 구조

상관쿼리는 먼저 메인쿼리를 한 행 조회하고,
해당 행이 서브쿼리에 조건을 충족하는지 확인하여 SELECT를 진행한다.

해석 순서가 기존 서브쿼리와는 다르게
메인쿼리 1행 -> 1행에 대한 서브쿼리
메인쿼리 2행 -> 2행에 대한 서브쿼리
.....
메인쿼리의 행의 수 만큼 서브쿼리가 생성되어 진행된다.

직급별 급여 평균보다 급여를 많이 받는 직원의
이름, 직급코드 , 급여 조회

SELECT EMP_NAME, JOB_CODE ,SALARY --메인쿼리
FROM EMPLOYEE MAIN
WHERE SALARY > (SELECT AVG(SALARY)
FROM EMPLOYEE SUB
WHERE SUB.JOB_CODE = MAIN.JOB_CODE);

부서별 입사일이 가장 빠른 사원의
사번, 이름, 부서명(NULL이면 '소속없음') , 직급명, 입사일을 조회하고
입사일이 빠른 순으로 조회하시오 (오름차순)
단, 퇴사한 직원은 제외하고 조회하기

SELECT EMP_ID ,EMP_NAME , NVL(DEPT_TITLE, '소속없음'), JOB_NAME, HIRE_DATE 
FROM EMPLOYEE MAIN
JOIN JOB USING(JOB_CODE)
JOIN DEPARTMENT ON(DEPT_ID = DEPT_CODE)
WHERE ENT_YN = 'N'
AND HIRE_DATE =
(SELECT MIN(HIRE_DATE) 
FROM EMPLOYEE SUB
WHERE SUB.DEPT_CODE = MAIN.DEPT_CODE)
ORDER BY HIRE_DATE;

-- 1) MAIN의 1행의 DEPT_CODE를 SUB에 대입중
-- 2) SUB를 수행
-- 3) SUB의 결과를 이용해서 MAIN의 조건절 수행

profile
ha lee :)

0개의 댓글