모든 일상

SQL JOIN 예제문제 본문

코딩 공부/SQL

SQL JOIN 예제문제

통통푸린 2021. 4. 30. 07:29
728x90
반응형

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

728x90
반응형

'코딩 공부 > SQL' 카테고리의 다른 글

SQLD 합격 후기 및 공부법  (1) 2024.06.14
3일차  (0) 2021.05.03
3일차 예제문제  (0) 2021.04.30
2일차 예제문제  (0) 2021.04.30
1일차 예제문제  (0) 2021.04.28