Database - SQL 실습4

Bomin Seo·2022년 7월 24일
0

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
profile
KHU, SWCON

0개의 댓글