일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 들안길삼겹살
- 수성못맛집
- programmers
- 대구카페
- 앞산카페
- 별찍기
- 오라클
- 수성구데이트
- 안지랑카페
- 수성못삼겹살
- 프로그래머스
- BFS
- 서울맛집
- 브루트 포스
- 수성구맛집
- 큐
- 반복문
- C#
- oracle
- 대명동맛집
- 대구삼겹살
- 정렬
- 조건문
- 범어동맛집
- 대구데이트
- 대구맛집
- 백준
- SQL
- 대구고깃집
- 압구정데이트
- Today
- Total
모든 일상
SQL JOIN 예제문제 본문
EX1. 모든 사원의 이름, 부서 번호, 부서 이름을 표시하는 질의를 작성하시오.
##오라클
select e.last_name, e.department_id, d.department_name
from emp e, dept d
where e.department_id = d.department_id ;
##ansi
select e.last_name, e.department_id, d.department_name
from emp e join dept d
on(e.department_id=d.department_id);
EX2. 부서 60에 속하는 모든 사원의 이름과 부서이름을 표시하는 질의를 작성하시오.
## 오라클
select e.last_name, d.department_name
from emp e, dept d
where e.department_id = d.department_id and e.department_id=60;
## ansi
select e.last_name, d.department_name
from emp e join dept d on(e.department_id=d.department_id)
where e.department_id = 60;
EX3. 커미션을 받는 모든 사원의 이름과 부서이름을 표시하는 질의를 작성하시오.
## 오라클
select e.last_name, d.department_name
from emp e, dept d
where e.commission_pct is not null and e.department_id = d.department_id;
## ansi
select e.last_name, d.department_name
from emp e join dept d on(e.department_id = d.department_id)
where e.commission_pct is not null
EX4. 이름에 A가 들어가는 모든 사원의 이름과 부서이름을 표시하는 질의를 작성하시오.
## 오라클
select last_name, department_name
from emp e, dept d
where upper(e.last_name) like '%A%' and e.department_id = d.department_id;
# ansi
select last_name, department_name
from emp e join dept d on(e.department_id = d.department_id)
where upper(last_name) like '%A%';
EX5. LOCATION_ID가 1700 에서 근무하는
모든 사원의 이름, 직위, 부서 번호 및 부서 이름을 표시하는 질의를 작성한다.
## 오라클
select e.last_name, e.job_id, e.department_id, d.department_name
from emp e, dept d
where e.department_id = d.department_id and d.location_id = 1700;
# ansi
select e.last_name, e.job_id, e.department_id, d.department_name
from emp e join dept d on( e.department_id = d.department_id)
where d.location_id = 1700;
EX6. 사원의 이름 및 사원 번호, 관리자(상사)의 이름과 관리자 번호와 함께 표시하고
열 레이블 각각 Employee, Emp#, Manager, Mgr#로 지정한다.
단, 매니저가 없는 사원도 출력하시오.
## 오라클
select e.last_name as "Employee", e.employee_id as "Emp#",
m.last_name as "Manager", m.manager_id as "Mgr#"
from emp e, emp m
where e.employee_id = m.manager_id(+);
## ansi
select e.last_name as "Employee", e.employee_id as "Emp#",
m.last_name as "Manager", m.manager_id as "Mgr#"
from emp e left outer join emp m on(e.employee_id = m.manager_id);
EX7. JOB GRADE 테이블의 구조를 확인하고, 모든 사원의 이름, 직위, 부서 이름, 급여 및 등급을 표시하는 질의 작성하시오.
단, 급여가 많은 사원부터 출력하시오.
## 오라클
select e.last_name, e.job_id, d.department_name, e.salary, j.grade_level
from emp e, dept d, job_grades j
where e.department_id=d.department_id
and e.salary between j.lowest_sal and j.highest_sal;
order by e.salary desc;
## ansi
select e.last_name, e.job_id, d.department_name, e.salary, j.grade_level
from (emp e join dept d on(e.department_id=d.department_id))
join job_grades j on (e.salary between j.lowest_sal and j.highest_sal);
order by e.salary desc;
EX8. Chen 사원보다 늦게 입사한 사원의 이름과 입사일을 표시하는 질의를 작성 하시오.
## 오라클
select e.last_name, e.hire_date
from emp e, emp m
where m.last_name = 'Chen' and m.hire_date < e.hire_date;
select last_name, hire_date
from emp
where hire_date > (select hire_date from emp where last_name = 'Chen');