▶문제 1
inner Join을 활용하여 locations 테이블에 city가 'Seattle'인 경우의 데이터 중 first_name, last_name, department_id, department_name, job_id, job_title, ctiy까지 모두 출력하라.
[답]
1
2
3
4
5
6
7
8
9
10
|
SELECT e.FIRST_NAME , e.LAST_NAME ,
d.DEPARTMENT_ID , d.DEPARTMENT_NAME ,
j.JOB_ID , j.JOB_TITLE ,
l.CITY
FROM EMPLOYEES e
INNER JOIN DEPARTMENTS d ON e.DEPARTMENT_ID = d.DEPARTMENT_ID
INNER JOIN JOBS j ON e.JOB_ID = j.JOB_ID
INNER JOIN LOCATIONS l ON d.LOCATION_ID = l.LOCATION_ID
WHERE l.CITY = 'Seattle'
;
|
cs |
[풀이]
SELECT해오는 데이터를 기준으로 table을 선정한다.
DEPARTMENT_ID와 DEPARTMENT_NAME은 DEPARTMENT 테이블에 JOBID와 JOB_TITLE은 JOBS에 위치되어있으니 INNER를 통해 해당 테이블을 불러와야한다.
WHERE은 from 으로 불러온 데이터에서 조건값을 구해야하는 것이니 제일 밑줄에 작성해준다.
▶문제 2
Left Outer Join 을 사용하여
Employee_ID, First_Name, Hire_Date, Start_Date, End_Date, Job_Id, Department_Id를 출력하고
Employee_id를 오름차순 정렬하시오
[답]
1
2
3
4
5
6
7
|
SELECT e.EMPLOYEE_ID , e.FIRST_NAME , e.HIRE_DATE ,
jh.START_DATE , jh.END_DATE , jh.JOB_ID ,
e.DEPARTMENT_ID
FROM EMPLOYEES e
LEFT OUTER JOIN JOB_HISTORY jh ON e.EMPLOYEE_ID = jh.EMPLOYEE_ID
ORDER BY e.EMPLOYEE_ID
;
|
cs |
[풀이]
DEPARTMENT_ID는 굳이 EMPLOYEE와 DEPARTMENT를 연결할 필요 없이 EMPLOYEE에도 기록이 있으니 JOB_HISTORY만 LEFT OUTER JOIN을 통해 조인해주면된다.
▶문제 3
사원들의 이름, 부서번호, 부서명을 출력하라
1
2
3
4
5
|
SELECT e.FIRST_NAME , e.DEPARTMENT_ID ,
d.DEPARTMENT_NAME
FROM EMPLOYEES e
LEFT OUTER JOIN DEPARTMENTS d ON e.DEPARTMENT_ID = d.DEPARTMENT_ID
;
|
cs |
▶문제 4
30번 부서의 사원들의 이름, 직업, 부서명 출력하라
1
2
3
4
5
6
7
8
|
SELECT e.FIRST_NAME , e.JOB_ID ,
d.DEPARTMENT_NAME,
j.JOB_TITLE
FROM EMPLOYEES e
LEFT OUTER JOIN DEPARTMENTS d ON e.DEPARTMENT_ID = d.DEPARTMENT_ID
LEFT OUTER JOIN JOBS j ON e.JOB_ID = j.JOB_ID
WHERE d.DEPARTMENT_ID = 30
;
|
cs |
▶문제 5
커미션을 받는 사원의 이름, 직업, 부서번호, 부서명을 출력하라
1
2
3
4
5
6
7
8
|
SELECT e.FIRST_NAME , e.JOB_ID ,
d.DEPARTMENT_NAME, d.DEPARTMENT_ID ,
j.JOB_TITLE
FROM EMPLOYEES e
LEFT OUTER JOIN DEPARTMENTS d ON e.DEPARTMENT_ID = d.DEPARTMENT_ID
LEFT OUTER JOIN JOBS j ON e.JOB_ID = j.JOB_ID
WHERE NOT (e.COMMISSION_PCT = NULL)
;
|
cs |
▶문제 6
이름에 A가 들어가는 사원들의 이름과 부서이름을 출력하라
1
2
3
4
5
|
SELECT e.FIRST_NAME , d.DEPARTMENT_NAME
FROM EMPLOYEES e
LEFT OUTER JOIN DEPARTMENTS d ON e.DEPARTMENT_ID = d.DEPARTMENT_ID
WHERE e.FIRST_NAME LIKE '%A%'
;
|
cs |
▶문제 7
사원이름(FIRST_NAME)과 그 사원의 관리자 이름(MANAGER_ID)을 출력하라.
1
2
3
4
|
SELECT e.FIRST_NAME , e.MANAGER_ID
FROM EMPLOYEES e
INNER JOIN DEPARTMENTS d ON e.EMPLOYEE_ID = d.DEPARTMENT_ID
;
|
cs |
▶문제 8
사원이름과 부서명과 월급을 출력하는데 월급이 3000 이상인 사원을 출력하라
1
2
3
4
5
|
SELECT e.FIRST_NAME , e.SALARY , d.DEPARTMENT_NAME
FROM EMPLOYEES e
LEFT OUTER join DEPARTMENTS d ON e.EMPLOYEE_ID = d.DEPARTMENT_ID
WHERE e.SALARY >= 3000
;
|
cs |
▶문제 9
급여가 3000에서 5000사이인 사원의 이름과 부서명을 출력하라
1
2
3
4
5
|
SELECT e.FIRST_NAME , d.DEPARTMENT_ID , e.SALARY
FROM EMPLOYEES e
LEFT OUTER join DEPARTMENTS d ON e.EMPLOYEE_ID = d.DEPARTMENT_ID
WHERE SALARY BETWEEN 3000 AND 5000
;
|
cs |
▶문제 10
급여가 3000이하인 사원의 이름과 급여, 근무지를 출력하라
1
2
3
4
5
6
7
|
SELECT e.FIRST_NAME , e.SALARY,
d.DEPARTMENT_NAME ,l.city
FROM EMPLOYEES e
LEFT OUTER join DEPARTMENTS d ON e.EMPLOYEE_ID = d.DEPARTMENT_ID
LEFT OUTER join LOCATIONS l ON l.LOCATION_ID = d.LOCATION_ID
WHERE e.SALARY <= 3000
;
|
cs |
▶문제 11
Steven King의 부서명을 출력하라
1
2
3
4
5
6
|
SELECT e.FIRST_NAME , d.DEPARTMENT_NAME
FROM EMPLOYEES e
LEFT OUTER join DEPARTMENTS d ON e.EMPLOYEE_ID = d.DEPARTMENT_ID
WHERE e.LAST_NAME = 'King'
AND e.FIRST_NAME = 'Steven'
;
|
cs |
▶문제 12
IT부서에서 근무하고 있는 사람들의 이름, 부서명을 출력하라
1
2
3
4
5
|
SELECT e.FIRST_NAME , e.SALARY , d.DEPARTMENT_NAME
FROM EMPLOYEES e
LEFT OUTER JOIN DEPARTMENTS d ON e.DEPARTMENT_ID = d.DEPARTMENT_ID
WHERE d.DEPARTMENT_NAME = 'IT'
;
|
cs |
▶문제 13
업무가 SA_MAN인 사람의 사원번호, 이름, 급여, 부서명, 근무지(location_id)를 출력하여라
1
2
3
4
5
6
|
SELECT e.EMPLOYEE_ID , e.FIRST_NAME , e.SALARY,
d.DEPARTMENT_name, d.LOCATION_ID
FROM EMPLOYEES e
LEFT OUTER JOIN DEPARTMENTS d ON e.DEPARTMENT_ID = d.DEPARTMENT_ID
WHERE e.JOB_ID = 'SA_MAN'
;
|
cs |
▶문제 14
Employees 테이블과 Departments 테이블에서, * Departments 테이블 기준으로 사원번호, 이름, 업무(job_id),부서번호, 부서명,근무지를 * 출력하라
1
2
3
4
5
6
|
SELECT e.EMPLOYEE_ID, e.FIRST_NAME , e.JOB_ID ,
d.DEPARTMENT_ID , d.DEPARTMENT_NAME ,
d.LOCATION_ID
FROM EMPLOYEES e
RIGHT OUTER JOIN DEPARTMENTS d ON d.DEPARTMENT_ID = e.EMPLOYEE_ID
;
|
cs |
'오답노트 > DBMS' 카테고리의 다른 글
MySQL_서브쿼리(SubQuery) ,UPDATE,INSERT 연습문제 (0) | 2022.05.20 |
---|---|
MySQL 연습문제(JOIN) (0) | 2022.05.18 |
MySQL 연습문제(WHERE) (0) | 2022.05.16 |
데이터베이스(Oracle)_서브쿼리(subQuery) 연습문제 (0) | 2022.04.18 |
데이터베이스(Oracle)_Select 연습문제 (0) | 2022.04.08 |