카테고리 없음

SQL 4-2 연습문제 풀이

webpage 2024. 10. 30. 20:42

11.
후배가 선배보다 먼저 승진한 경우
관리자보다 먼저 입사한 사원 정보 : 사원정보테이블
관리자보다 늦게 입사한 사원 정보 : 사원정보테이블
출력하려는 데이터가 모두 동일한 테이블에 있다. (자체조인)

select worker.last_name, worker.hire_date, 
manager.last_name, manager.hire_date
from employees worker, employees manager
where worker.manager_id = manager.employee_id and
worker.hire_date < manager.hire_date;

10.
Davies 사원정보 : 사원정보테이블에 있다.
Davies 보다 늦게 입사한 사원정보 : 사원정보테이블에 있다.
찾는 데이터가 모두 동일한 테이블에 있으므로 자체조인

select junior.last_name, junior.hire_date
from employees davies, employees junior
where davies.last_name = 'Davies' and junior.hire_date > davies.hire_date;

8.
부서번호/ 사원 / 이 사원의 동료 ---> 사원정보테이블(employees)
사원정보테이블 --> 사원용 사원정보테이블, 동료용 사원정보테이블
모든 데이터가 사원정보테이블에 있으므로 자체조인
추가조건 : worker와 friend에 동일한 이름은 빼라.

select worker.department_id, worker.last_name, friend.last_name
from employees worker, employees friend
where worker.department_id = friend.department_id and
worker.last_name <> friend.last_name;

7.
6번 문제를 수정해서 없는 데이터를 빈 칸으로 출력해라. --> 포괄조인
-> 사원정보는 있다. 해당사원의 관리자가 없으므로 빈칸으로 출력.
select worker.last_name "사원명", worker.employee_id "사번", 
manager.last_name "관리자명", manager.employee_id "관리자 사번"
from employees worker, employees manager
where worker.manager_id = manager.employee_id(+);

6.
찾는 항목 : 사원의 이름, 사원번호, 관리자의 이름, 관리자의 사번
찾는 항목 모두 사원정보테이블에 있다.
사원정보테이블을 사원정보와 관리자정보로 논리적으로 나눈다.(자체조인)

select worker.last_name "사원명", worker.employee_id "사번", 
manager.last_name "관리자명", manager.employee_id "관리자 사번"
from employees worker, employees manager
where worker.manager_id = manager.employee_id;

5.
찾는 항목 : 사원의 이름, 업무코드, 부서번호, 부서이름
사원의 이름, 업무코드, 부서번호 -> 사원정보테이블
부서번호, 부서이름 -> 부서정보테이블
사원정보테이블과 부서정보테이블에는 동일한 데이터(부서번호)가 있다. -> 등가조인
추가 조건 : Toronto에서 근무 -> 도시이름 -> 위치정보테이블
부서정보테이블과 위치정보테이블에도 동일한 데이터(위치번호)가 있다. -> 등가조인

select e.last_name, e.job_id, e.department_id, d.department_name
from employees e, departments d, locations l
where e.department_id = d.department_id and
d.location_id = l.location_id and l.city = 'Toronto';