본문 바로가기
SQL

테이블 조인 연습하기 OracleTable Join practice

by devorldist 2022. 6. 1.
728x90
반응형
SMALL

# TABLE JOIN PRACTICE (ANSWERS NEED TO BE SET THE BLOCK)

정답을 블록 설정으로 확인

 

1. EQUI 조인 사용하여 SCOTT 사원의 부서번호와 부서이름을 출력

SELECT E.ENAME, D.DNO, D.DNAME
FROM EMPLOYEES E, DEPARTMENT D
WHERE E.DNO = D.DNO AND E.ENAME = 'SCOTT';

 

2. INNER JOIN과 ON 연산자를 사용하여 사원이름과 함께 그 사원이 소속된 부서이름과 지역명을 출력

SELECT ENAME, DNAME, LOC
FROM DEPARTMENT D JOIN EMPLOYEE E
ON E.DNO = D.DNO;

 

3. INNER JOIN과 USING 연산자를 사용하여 10번 부서에 속하는 모든 담당 업무의 고유목록을 한번 씩만 부서의 지역명을 포함하여 출력

SELECT DNO, JOB, LOC
FROM EMPLOYEE INNER JOIN DEPARTMENT
USING(DNO)
WHERE DNO=10;

 

4. NATURAL JOIN을 사용하여 커미션을 받는 모든 사원의 이름, 부서이름, 지역명을 출력

SELECT ENAME, DNAME, LOC
FROM EMPLOYEE NATURAL JOIN DEPARTMENT
WHERE COMMISSION > 0;

 

5.  EQUI JOIN과 WildCard를 사용하여 이름에 A가 포함된 모든 사원의 이름과 부서명을 출력

SELECT E.ENAME, D.DNAME
FROM EMPLOYEE E, DEPARTMENT D
WHERE E.DNO=D.DNO AND E,ENAME LIKE '%A%';

 

6. NATURAL JOIN을 사용하여 NY에 근무하는 모든 사원의 이름, 업무, 부서번호, 부서명 출력

SELECT ENAME, JOB, DNO, DNAME
FROM EMPLOYEE NATURAL JOIN DEPARTMENT
WHERE LOC = 'NEW YORK';

 

7. SELF JOIN을 사용하여 사원의 이름 및 사원번호를 관리자 이름 및 관리자 번호와 함께 출력

SELECT A.ENAME AS "Employee", A.Manager AS "Emp#", B.ENO AS "Manager", B.ENAME AS "Mgr#"
FROM EMPLOYEE A, EMPLOYEE B
WHERE A.MANGER = B.ENO;

 

8. OUTER JOIN, SELF JOIN을 사용하여 관리자가 없는 사원을 포함하여 사원번호를 기준으로 내림차순 정렬하여 출력

SELECT A.ENAME AS "Employee", A.MANAGER AS "Emp#", B.ENO AS "Manager", B.ENAME AS "Mgr#"
FROM EMPLOYEE A  OUTER JOIN EMPLOYEE B
WHERE A.MANAGER = B.ENO(+) --LEFT OUTER JOIN. A 테이블을 기준으로 합침. 관리자 없으면 그 부분은 NULL
ORDER BY A.ENO DESC;

 

9. SELF JOIN을 사용하여 지정한 사원의 이름, 부서번호, 지정한 사원과 동일한 부서에서 근무하는 사원을 출력

SELECT A.ENAME AS "이름", A.DNO AS "부서번호", B.ENAME AS "동료"
FROM EMPLOYEE A, EMPLOYEE B
WHERE A.DNO = B.DNO
AND A.ENAME = 'SCOTT'
AND B.ENAME != 'SCOTT';

 

10. SELF JOIN을 사용하여 WARD 사원보다 늦게 입사한 사원의 이름과 입사일을 출력

SELECT O.ENAME, O.HIREDATE
FROM EMPLOYEE O, EMPLOYEE W
WHERE O.HIREDATE > W.HIREDATE
AND W.ENAME = 'WARD'
ORDER BY HIREDATE;

 

11. SELF JOIN을 사용하여 관리자보다 먼저 입사한 모든 사원의 이름 및 입사일을 관리자의 이름 및 입사일과 함께 출력

SELECT O.ENAME, O.HIREDATE, M.ENAME, M.HIREDATE
FROM EMPLOYEE M, EMPLOYEE O
WHERE O.MANAGER = M.ENO
AND O.HIREDATE <= M.HIREDATE;

 

출처 : 오라클 11G 프로그래밍

728x90
반응형
LIST