1. Zlotkey와 동일한 부서에 속한 모든 사원의 이름과 입사일을 표시하는 질의를 작성하십시오. (Zlotkey는 제외)
A.
SELECT LAST_NAME, HIRE_DATE
FROM EMPLOYEES
WHERE DEPARTMENT_ID = (SELECT DEPARTMENT_ID
FROM EMPLOYEES
WHERE LAST_NAME = 'Zlotkey')
AND LAST_NAME <> 'Zlotkey';
2. 급여가 평균 급여보다 많은 모든 사원의 사원 번호와 이름을 표시하는 질의를 작성하고 결과를 급여에 대해 오름차순으로 정렬하십시오.
A.
SELECT EMPLOYEE_ID, LAST_NAME
FROM EMPLOYEES
WHERE SALARY > (SELECT AVG(SALARY)
FROM EMPLOYEES)
ORDER BY SALARY;
3. 이름에 u가 포함된 사원과 같은 부서에서 일하는 모든 사원의 사원 번호와 이름을 표시하는 질의를 작성하십시오.
A.
SELECT EMPLOYEE_ID, LAST_NAME
FROM EMPLOYEES
WHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID
FROM EMPLOYEES
WHERE LAST_NAME LIKE '%u%');
4. 부서 위치 ID가 1700인 모든 사원의 이름, 부서 번호 및 업무 ID를 표시하십시오.
A.
SELECT LAST_NAME, DEPARTMENT_ID, JOB_ID
FROM EMPLOYEES
WHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID
FROM DEPARTMENTS
WHERE LOCATION_ID = 1700);
5. King에게 보고하는 모든 사원 이름과 급여를 표시하십시오
A.
SELECT LAST_NAME, SALARY
FROM EMPLOYEES
WHERE MANAGER_ID = (SELECT EMPLOYEE_ID
FROM EMPLOYEES
WHERE LAST_NAME = 'King' AND EMPLOYEE_ID = 100);
6. Executive 부서의 모든 사원에 대한 부서 번호, 이름 및 업무 ID를 표시하십시오.
A.
SELECT DEPARTMENT_ID, LAST_NAME, JOB_ID
FROM EMPLOYEES
WHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID
FROM DEPARTMENTS
WHERE DEPARTMENT_NAME = 'Executive');
7. 평균 급여보다 많은 급여를 받고 이름에 u가 포함된 사원과 같은 부서에서 근무하는 모든 사원의 번호, 이름 및 급여를 표시하십시오.
A.
SELECT EMPLOYEE_ID, LAST_NAME, SALARY
FROM EMPLOYEES
WHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID
FROM EMPLOYEES
WHERE LAST_NAME LIKE '%u%')
AND SALARY > (SELECT AVG(SALARY)
FROM EMPLOYEES);
8. 미국(locations.country_id = ‘US’) 내에서 근무하는 사원들의 평균 급여보다 많은 급여를 받는 사원의 번호, 이름 및 급여를 표시하십시오.
A.
SELECT EMPLOYEE_ID, LAST_NAME, SALARY
FROM EMPLOYEES
WHERE SALARY >= (SELECT AVG(E.SALARY)
FROM EMPLOYEES E, DEPARTMENTS D
WHERE D.LOCATION_ID IN
(SELECT DISTINCT LOCATION_ID
FROM LOCATIONS
WHERE COUNTRY_ID = 'US'));
9. 부서 별로 최고 급여를 받는 사원의 번호, 이름, 급여 몇 부서 번호를 표시하고 부서 번호에 대해 오름 차순 정렬을 하시오.
A.
SELECT EMPLOYEE_ID, LAST_NAME, SALARY, DEPARTMENT_ID
FROM EMPLOYEES
WHERE (DEPARTMENT_ID, SALARY) IN (SELECT DEPARTMENT_ID, MAX(SALARY)
FROM EMPLOYEES
GROUP BY DEPARTMENT_ID)
ORDER BY DEPARTMENT_ID
10. FROM 절을 사용하여 9 번 질의를 재 작성하시오.
A.
SELECT E.EMPLOYEE_ID, E.LAST_NAME, E.SALARY, E.DEPARTMENT_ID
FROM EMPLOYEES E INNER JOIN (SELECT DEPARTMENT_ID, MAX(SALARY) MAXSALARY
FROM EMPLOYEES
GROUP BY DEPARTMENT_ID) E2
ON E.SALARY = E2.MAXSALARY AND E.DEPARTMENT_ID = E2.DEPARTMENT_ID
11. 사원이 한 명 이상 존재하는 부서의 번호 및 부서 이름을 표시하시오. (exists 키워드 사용)
A.
SELECT D.DEPARTMENT_ID, D.DEPARTMENT_NAME
FROM DEPARTMENTS D
WHERE EXISTS(SELECT DEPARTMENT_ID
FROM EMPLOYEES E
WHERE D.DEPARTMENT_ID = E.DEPARTMENT_ID)
EXISTS 문
- EXISTS 서브 쿼리의 결과가 한 건이라도 존재한다면 TRUE를 반환하고 그렇지 않다면 FALSE를 반환한다.
12. 다음을 참고하여 급여를 가장 적게 받는 사원 5명에 대한 정보를 표시하시오.
select rownum, employee_id, last_name, salary
from employees
where rownum <= 5
A.
SELECT ROWNUM, EMPLOYEE_ID, LAST_NAME, SALARY
FROM (SELECT EMPLOYEE_ID, LAST_NAME, SALARY
FROM EMPLOYEES
ORDER BY SALARY ASC)
WHERE ROWNUM <= 5