SQLD, ECLIPS, JAVA,PYTHON, NODE....

[Oracle] SQL Class 8 - Join 실습예제 본문

SQL

[Oracle] SQL Class 8 - Join 실습예제

D_Aiden 2023. 11. 6. 14:11
728x90
반응형
SMALL

JOIN의 실습예제(SCOTT)


1. EMP 테이블과 DEPT 테이블을 CARTESIAN PRODUCT로 사원번호,이름,업무,부서번호,부서명,근무지를 출력하라.
 select empno,ename,job,DEPT.DEPTNO,DEPT.DNAME,DEPT.LOC from emp cross join dept;


2. EMP 테이블에서 사원번호, 이름 ,업무, 부서번호,부서명,근무지 출력하라. 단, 사원이 없는 부서의 부서번호도 출력하라.
 select empno,ename,job,d.deptno,d.dname,d.loc from emp e,dept d
where e.deptno(+)=D.DEPTNO;


3. SALESMAN의 사원번호,이름,급여,부서명,근무지를 출력하라.
  select empno,ename,sal,d.dname,d.loc from emp e, dept d
where E.DEPTNO=D.DEPTNO and e.job='SALESMAN';


4. 사원번호,이름,업무,급여,급여의 등급,하한 값,상한 값을 출력하라.
  select e.empno,e.ename,e.job, e.sal, s.grade,s.losal,s.hisal from emp e, salgrade s
where e.sal>=s.losal and e.sal<=s.hisal;


5. EMP 테이블에서 SELF JOIN으로 상사를 출력하라. 사원번호(EMPNO), 사원명(ENAME),상사 번호(MGR_NO),상사명(MGR_NAME) , 상사가 없는 사람도 출력하라.
select e.empno,e.ename,e.MGR,m.ename from emp e,emp m
where E.MGR=M.EMPNO(+);


6. 상사가 7698인 사원의 이름, 사원번호, 상사번호, 상사명을 출력하라.
 select e.ename,e.MGR,m.ename from emp e,emp m
where E.MGR=M.EMPNO and e.mgr=7698;


7. NEW YORK에서 근무하고 있는 사원에 대해 이름, 업무, 급여, 부서명을 출력
  select empno,job,sal,d.deptno from emp e,dept d
where e.deptno=d.deptno and d.loc='NEW YORK';


8. 보너스를 받는 사원에 대해 이름, 업무, 급여, 부서명을 출력
 select ename,job,sal,d.dname from emp e,dept d
where e.deptno=d.deptno and e.comm is not null;


9. 이름 중 L자를 가진 사원에 대해 이름, 업무, 부서명, 부서 위치를 출력
 select ename,job,d.dname,d.loc from emp e, dept d
where e.deptno=d.deptno and e.ename like '%L%';


10.  사원번호, 이름, 업무, 부서번호, 부서명, 위치, 급여, 급여 등급을 출력하라.
  select empno,ename,job,d.deptno,d.dname,d.loc,sal,s.grade from emp e,dept d, salgrade s
where e.deptno=d.deptno and e.sal>=s.losal and e.sal<=s.hisal;


11. SALES 부서에서 근무하는 사원번호, 이름, 부서번호, 부서명, 근무지역을 출력
  select empno,ename,e.deptno,d.dname,d.loc from emp e, dept d
where E.DEPTNO=D.DEPTNO and d.dname='SALES';


12. 업무가 MANAGER이거나 CLERK인 사원의 사원번호, 이름, 급여, 업무, 부서명, 급여등급을 출력하라.
select empno,ename,sal,job,d.dname,s.grade  from emp e,dept d, salgrade s
where e.deptno=d.deptno and e.sal>=s.losal and e.sal<=s.hisal and (e.job='MANAGER' OR E.JOB='CLERK');
  
13. 사원번호, 사원이름, 사원급여, 상사번호, 상사 이름, 상사의 업무를 출력하라. 상사가 없는 사람도 출력하라.
  select e.empno,e.ename,e.sal,e.mgr,m.job from emp e,emp m
where e.mgr=m.empno(+);


14. EMP 테이블에서 그들의 상사보다 먼저 입사한 사원에 대해 사원이름, 사원의 입사일, 상사 이름, 상사 입사일을 출력
  select e.ename,e.hiredate,m.ename,m.hiredate from emp e,emp m
where e.mgr=m.empno and E.HIREDATE<M.HIREDATE;


15. 아래와 같이 사원의 급여와 사원의 급여만큼 ‘*’를 출력하라, * 하나는 100을 의미한다.

ENAME        DNAME      SAL/100   STAR
ADAMS        RESEARCH        11   ***********
ALLEN         SALES            16   ****************
……
> col star  format A55 를 실행한 후에 쿼리 실행
> SELECT ~
select ename,d.dname,floor(sal/100),lpad('*',sal/100,'*') "star" from emp e,dept d
where e.deptno=d.deptno;


16. 사원 테이블명을 E,상사 테이블명을 M으로 할 때 사원번호(E.EMPNO), 사원이름, 사원 급여, 사원 급여등급, 상사번호(M.EMPNO), 상사이름, 상사 급여, 상사 급여 등급을 출력하라.  단, 상사(M) 테이블에서 부하직원이 없는 사람도 출력하라. 
select e.empno,e.ename,e.sal,s.grade,m.empno,m.ename,m.sal,ms.grade from emp e,emp m,salgrade s,salgrade ms
where e.mgr(+)=m.empno and e.sal>=s.losal and e.sal<=s.hisal and m.sal>=ms.losal(+) and m.sal<=ms.hisal(+);


17. 사원번호, 사원 이름, 사원의 급여,사원급여 등급, 상사번호, 상사 부서번호, 상사의 부서명을 출력하라. 단, 상사가 없는 사람도 출력하라.
 select e.empno,e.ename,e.sal,s.grade,M.EMPNO,m.deptno,d.dname from emp e,dept d,emp m,salgrade s
where e.mgr=M.EMPNO and e.sal>=s.losal and e.sal<=s.hisal and m.deptno=d.deptno;

 

18. 사원번호, 사원 이름, 사원의 부서번호,사원의 부서명, 상사이름, 상사 부서번호, 상사의 근무지역을 출력하라. 단, 사원테이블의 상사가 없는 사람도 출력하고 사원이 존재하지 않는 부서번호와 부서명도 출력하라.
select e.empno,e.ename,e.deptno,d.dname,m.ename,m.deptno,d2.loc from emp e,dept d,emp m,dept d2
where e.deptno=d.deptno and e.mgr=m.empno and m.deptno=d2.deptno;

 

 

남교수님 메모

JOIN답안.doc
0.05MB

728x90
반응형
LIST