Subquery는 SQL 안에 SQL문을 사용하는 것으로
SELECT, FROM, WHERE 등 다양한 곳에서 사용된다.
1.다음과 같이 부서별 직원 수를 Subquery로 구하시오
![](data:image/png;base64,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)
SELECT D.DEPT_NAME
, (SELECT COUNT(*) FROM DEPT_EMP DE WHERE DE.TO_DATE = '9999-01-01' AND DE.DEPT_NO=D.DEPT_NO)
FROM DEPARTMENTS D;
SELECT D.DEPT_NAME, COUNT(*)
FROM DEPARTMENTS D
INNER JOIN DEPT_EMP DE ON DE.DEPT_NO=D.DEPT_NO
WHERE DE.TO_DATE = '9999-01-01'
GROUP BY D.DEPT_NAME;
SELECT절에 Subquery를 사용하는 예이다.
Subquery를 사용한 SQL문은 부서를 가져오면서 각 부서(DEPT_EMP)에 배정된 직원의 인원수를 계산(COUNT)한다.
앞서 연습한 Join을 사용한 SQL문은 부서와 할당된 부서(DEPT_EMP)를 조인해서
부서명으로 그룹화하고 그 부서의 직원수를 계산(COUNT)한다.
둘다 적절한 SQL문은 아니고 설명을 위해 작성한 SQL문이다.
2. 각 부서에서 가장 오래 근무한 직원을 출력하시오.
![](data:image/png;base64,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)
SELECT DEPT_NAME
, (SELECT FIRST_NAME
FROM DEPT_EMP DE
INNER JOIN EMPLOYEES E ON E.EMP_NO = DE.EMP_NO
WHERE DE.TO_DATE = '9999-01-01' AND DE.DEPT_NO=D.DEPT_NO
ORDER BY FROM_DATE
LIMIT 1) EMPLOYEE
FROM DEPARTMENTS D;
Subquery에서 조인을 사용했다.
먼저, 부서 리스트(DEPARTMENTS )를 조회한다.
부서를 가져오면서 각 부서(DEPT_EMP)에 배정받은 날짜(FROM_DATE)가 가장 빠른 직원의 이름(EMPLOYEES)을 조회한다.
연습: 가장 오래된 직원 10명이 근무했던 처음과 마지막 부서를 출력하시오.
SELECT EM.*
, (SELECT DEPT_NAME FROM DEPT_EMP DEE, DEPARTMENTS DE
WHERE DEE.DEPT_NO=DE.DEPT_NO ORDER BY FROM_DATE LIMIT 1) FIRST_DEPT
, (SELECT DEPT_NAME FROM DEPT_EMP DEE, DEPARTMENTS DE
WHERE DEE.DEPT_NO=DE.DEPT_NO ORDER BY FROM_DATE DESC LIMIT 1) LAST_DEPT
FROM EMPLOYEES EM
ORDER BY HIRE_DATE
LIMIT 10;
3. 각 부서에서 급여를 가장 많이 받는 직원 리스트를 구하시오.
![](data:image/png;base64,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)
SELECT DEPT_NAME
, (SELECT FIRST_NAME
FROM DEPT_EMP DE
INNER JOIN EMPLOYEES E ON E.EMP_NO = DE.EMP_NO
INNER JOIN SALARIES S ON S.EMP_NO = DE.EMP_NO
WHERE DE.TO_DATE = '9999-01-01' AND DE.DEPT_NO=D.DEPT_NO
ORDER BY SALARY DESC
LIMIT 1) EMPLOYEE
FROM DEPARTMENTS D;
급여를 알기 위해 급여 테이블을 Subquery의 조인에 추가하였다.
먼저, 부서 리스트(DEPARTMENTS )를 조회한다.
부서를 가져오면서
해당 부서에 속한 직원들(DEPT_EMP)의 급여(SALARIES)를 확인한 뒤,
급여가 큰 순으로 정렬해서 가장 많이 받는 직원 1명(LIMIT)의 이름(EMPLOYEES)을 가져와 출력하게 된다.
4.부서별로 직원 수를 구하시오.
1번에서는 부서별 직원수를 조인과 SELECT절에 subquery를 사용하였다.
이 경우 데이터의 양이 많을 경우 속도가 느려질 수 있는데
속도를 고려하여 적절한 SQL을 작성하시오.
![](data:image/png;base64,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)
SELECT DEPT_NAME, CNT
FROM DEPARTMENTS D
INNER JOIN (
SELECT DEPT_NO, COUNT(*) CNT
FROM DEPT_EMP
WHERE TO_DATE='9999-01-01'
GROUP BY DEPT_NO
) DS ON D.DEPT_NO=DS.DEPT_NO
ORDER BY D.DEPT_NO
1번 문제에서 두 가지 방법을 사용하였다.
- 10개의 부서를 추출하고, 각 부서의 인원수를 계산하는 것
- 부서와 인원 테이블을 조인해서 데이터를 구성하고 부서명으로 그룹화 한 뒤 인원을 계산하는 것이다.
조인을 사용하는 것이 추천되는 방식인데
문제는 문자열로 그룹화 하는 것이다.
가급적 정형화된 코드로 그룹화 하는 것이 좋다.
더욱이 조인을 먼저 하기 때문에 많은 데이터 조인(부서수 10 & 인원수 240,124)이 발생한다.
개인적으로 가장 선호하는 방식은 위에 작성한 코드처럼
부서코드로 그룹화해서 인원을 계산하고, 부서명을 찾기 위해 조인하는 것이다.
부서수가 10개이므로 10개의 데이터(10 & 10)로 조인을 하기 때문에 더 빠르게 처리된다.
SQL 속도 처리(튜닝)는 처리하는 데이터 개수만 잘 세어도 거의 문제가 발생하지 않는다.
따라서 항상 몇 건의 데이터를 조인하고 그룹화 하는지 파악해야 한다.
5. 전체 평균보다 많이 받는 직원 수를 계산하시오.
SELECT COUNT(*) -- 107706
FROM SALARIES S
WHERE S.TO_DATE = '9999-01-01'
AND SALARY >= (SELECT AVG(SALARY) FROM SALARIES WHERE TO_DATE = '9999-01-01');
전체 평균을 Subquery로 구하여 조건절(WHERE)에서 사용하였다.
먼저, 현재 근무 중인 직원들의 급여 평균(AVG(SALARY))를 계산하고
그 금액보다 큰(>=) 직원들 인원을 계산(COUNT)한다.
6. 다음과 같이 퇴직한 직원 정보를 구하시오.
![](data:image/png;base64,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)
SELECT *
FROM EMPLOYEES E
WHERE NOT EXISTS(SELECT 1 FROM DEPT_EMP DE WHERE DE.TO_DATE = '9999-01-01' AND E.EMP_NO=DE.EMP_NO);
SELECT *
FROM EMPLOYEES E
WHERE EMP_NO NOT IN (SELECT DISTINCT EMP_NO FROM DEPT_EMP DE WHERE DE.TO_DATE = '9999-01-01');
이 데이터에서는 퇴직 필드가 없기 때문에 퇴직의 개념부터 먼저 정의해야 한다.
이 데이터에서 근무중인 직원은 "실습 2 - GROUP" 에서 정의한 데로
급여나 현재 근무 부서, 업무의 종료일자가 '9999-01-01'인 것이다.
따라서 퇴사는 종료일자가 '9999-01-01'아닌 것이 될 것이다.
즉, 직원중에서 급여, 근무 부서, 업무 테이블에 종료일자가 '9999-01-01'인 데이터가 없는(NOT EXISTS, NOT IN ) 직원이 퇴사자가 된다.
EXISTS와 IN 둘다 많이 사용되는 명령어로
DBMS에 따라 다르지만 대부분 Subquery의 양이 많으면 EXISTS를 사용하라고 권하고 있다.
개인적으로도 속도가 빨라서 EXISTS를 자주 사용한다.
다음 SQL문을 실행하여 정확성을 검증해 보자.
전체 직원수(300,024) = 근무중인 직원수(240,124) + 퇴사한 직원수(59,900)
SELECT COUNT(*)
FROM EMPLOYEES E;
SELECT COUNT(DISTINCT EMP_NO)
FROM DEPT_EMP DE
WHERE DE.TO_DATE = '9999-01-01';
7. 연도별 퇴직 직원수를 구하시오.
![](data:image/png;base64,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)
SELECT YEAR(TO_DATE), COUNT(*)
FROM (
SELECT DE.EMP_NO, MAX(TO_DATE) TO_DATE
FROM DEPT_EMP DE
WHERE NOT EXISTS(SELECT 1 FROM DEPT_EMP DE1 WHERE DE1.TO_DATE = '9999-01-01' AND DE1.EMP_NO=DE.EMP_NO)
GROUP BY DE.EMP_NO
) DS
GROUP BY YEAR(TO_DATE)
앞 5번 SQL문을 Subquery로 하여 그룹화 하였다.
퇴사 날짜를 구하기 위해 직원 테이블이 아닌 할당된 부서테이블(DEPT_EMP)을 사용하였다.
퇴사 날짜는 부서에서 근무한 마지막 날짜인 종료날짜(TO_DATE) 중에서 가장 큰값(Max)이 퇴사 날짜가 될 것이다.
각 개인별(GROUP BY DE.EMP_NO) 퇴사 날짜를 구해서
퇴사날짜를 년도별로 그룹화 하면 연도별 퇴사 직원수를 구할 수 있다.
이 경우는 다음과 같은 SQL 문이 더 효율적일 수 있다.
생각해보기: 각 부서에서 급여를 가장 많이 받는 직원이름과 급여를 출력하시오.