서브쿼리 실습 문제

Hyunsu·2023년 3월 15일
0

국비 교육

목록 보기
32/36
post-thumbnail

실습 문제 1

🚩 서브쿼리 문제 1

전지연 사원이 속해있는 부서원들을 조회하시오. (단, 전지연은 제외)
사번, 사원명, 전화번호, 고용일, 부서명

소스 코드

SELECT EMP_ID, EMP_NAME, PHONE, HIRE_DATE, DEPT_TITLE
FROM EMPLOYEE
LEFT JOIN DEPARTMENT ON(DEPT_CODE = DEPT_ID)
WHERE DEPT_CODE = (SELECT DEPT_CODE FROM EMPLOYEE 
                   WHERE EMP_NAME = '전지연')
AND EMP_NAME != '전지연';

실습 문제 2

🚩 서브쿼리 문제 2

고용일이 2000년도 이후인 사원들 중 급여가 가장 높은 사원의
사번, 사원명, 전화번호, 급여, 직급명을 조회하시오.

소스 코드

SELECT EMP_ID, EMP_NAME, PHONE, SALARY, JOB_NAME
FROM EMPLOYEE
JOIN JOB USING(JOB_CODE)
WHERE SALARY = (SELECT MAX(SALARY) FROM EMPLOYEE
                WHERE HIRE_DATE >= TO_DATE('2001-01-01','YYYY-MM-DD'));

실습 문제 3

🚩 서브쿼리 문제 3

노옹철 사원과 같은 부서, 같은 직급인 사원을 조회하시오. (단, 노옹철 사원은 제외)
사번, 이름, 부서코드, 직급코드, 부서명, 직급명

소스 코드

SELECT EMP_ID, EMP_NAME, DEPT_CODE, JOB_CODE, DEPT_TITLE, JOB_NAME
FROM EMPLOYEE
JOIN DEPARTMENT ON(DEPT_CODE = DEPT_ID)
NATURAL JOIN JOB
WHERE (DEPT_CODE, JOB_CODE) = (SELECT DEPT_CODE, JOB_CODE FROM EMPLOYEE
                               WHERE EMP_NAME = '노옹철')
AND EMP_NAME != '노옹철';  

실습 문제 4

🚩 서브쿼리 문제 4

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);

실습 문제 5

🚩 서브쿼리 문제 5

77년생 여자 사원과 동일한 부서이면서 동일한 사수를 가지고 있는 사원을 조회하시오.
사번, 이름, 부서코드, 사수번호, 주민번호, 고용일

소스 코드

SELECT EMP_ID, EMP_NAME, DEPT_CODE, MANAGER_ID, EMP_NO, HIRE_DATE
FROM EMPLOYEE                  
WHERE (DEPT_CODE, MANAGER_ID) = (SELECT DEPT_CODE, MANAGER_ID 
                                 FROM EMPLOYEE
                                 WHERE SUBSTR(EMP_NO, 1, 2) = '77'
                                 AND SUBSTR(EMP_NO, 8, 1) = '2');

실습 문제 6

🚩 서브쿼리 문제 6

부서별 입사일이 가장 빠른 사원의 사번, 이름, 부서명, 직급명, 입사일을 조회하고
입사일이 빠른 순으로 조회하시오. (단, 퇴사한 직원은 제외)

소스 코드

SELECT EMP_ID, EMP_NAME, NVL(DEPT_TITLE, '소속없음'), JOB_NAME, HIRE_DATE
FROM EMPLOYEE
LEFT JOIN DEPARTMENT ON(DEPT_CODE = DEPT_ID)
JOIN JOB USING(JOB_CODE)
WHERE HIRE_DATE IN(SELECT MIN(HIRE_DATE) 
                   FROM EMPLOYEE
                   WHERE ENT_YN != 'Y'
                   GROUP BY DEPT_CODE)
ORDER BY HIRE_DATE;

실습 문제 7

🚩 서브쿼리 문제 7

직급별 나이가 가장 어린 직원의 사번, 이름, 직급명, 나이, 보너스 포함 연봉을 조회하고
나이순으로 내림차순 정렬하세요. (단 연봉은 \124,800,000 으로 출력)

소스 코드

SELECT EMP_ID, EMP_NAME, JOB_NAME, FLOOR(MONTHS_BETWEEN(SYSDATE, TO_DATE(SUBSTR(EMP_NO, 1, 6), 'RRMMDD')) / 12) "만 나이",
       TO_CHAR(SALARY * (1 + NVL(BONUS, 0)) * 12, 'L999,999,999') "보너스 포함 연봉"
FROM EMPLOYEE E1 
JOIN JOB J ON(E1.JOB_CODE = J.JOB_CODE)
WHERE FLOOR(MONTHS_BETWEEN(SYSDATE, TO_DATE(SUBSTR(EMP_NO, 1, 6), 'RRMMDD')) / 12)
	  = (SELECT MIN(FLOOR(MONTHS_BETWEEN(SYSDATE, TO_DATE(SUBSTR(EMP_NO, 1, 6), 'RRMMDD')) / 12))
         FROM EMPLOYEE E2
         WHERE E1.JOB_CODE = E2.JOB_CODE)
ORDER BY "만 나이" DESC;

profile
현수의 개발 저장소

0개의 댓글