[SQL] SELF JOIN, OUTER JOIN 예제

정은아·2022년 8월 31일
0

Q. 매니저가 'KING'인 사원들의 이름과 직급을 출력하세요

select e.ename,e.job,e.mgr from emp e, emp dd
where dd.empno = e.mgr and dd.ename = 'KING';

Q. JONES와 동일한 근무지에서 근무하는 사원이름과 월급, 근무지를 출력하세요 (단, JONES는 제외하세요)

select f.ename, f.sal, d.loc 
from emp e, emp f, dept d
where e.deptno = d.deptno and e.deptno = f.deptno 
and e.ename= 'JONES' and f.ename <> 'JONES'; 

Q. 이름이 'SMITH'인 사원의 매니저(상관) 이름을 출력하세요

select e.ename || '의 매니저는 ' || m.ename ||' 입니다.'
from emp e, emp m
where e.mgr = m.empno 
and e.ename = 'SMITH';

Q. emp 테이블의 사원들의 이름과 매니저이름을 출력하세요

select e.ename"사원 이름" , m.ename as "상관 이름" 
from emp e, emp m
where e.mgr = m.empno;

Q. 상관번호 없는 사람도 나오게 하고 싶으면?

select e.ename"사원 이름" , m.ename as "상관 이름" 
from emp e, emp m
where e.mgr = m.empno(+); //매니저가 없는 사원번호에 +를 준다

Q. 사원이름에 'T'자가 들어가는 사원들의 이름과 부서명을 출력하세요

select e.ename,d.dname from emp e, dept d
where e.deptno = d.deptno and e.ename like '%T%';

Q. 사원 이름과 직급, 급여, 급여등급을 출력하세요

select e.ename,e.job, e.sal, s.grade from emp e,salgrade s
where e.sal between s.losal and s.hisal;
          
select e.ename,e.job, e.sal, s.grade from emp e,salgrade s
where e.sal >= s.losal and e.sal <= s.hisal;
          
select e.ename,e.job, e.sal, s.grade 
from emp e natural  join salgrade s
where e.sal between s.losal and s.hisal;

Q. 'DALLAS'에서 근무하는 사원들의 이름, 직급, 부서번호, 부서이름을 출력하시오.

select e.ename, e.job, e.deptno, d.dname
from emp e, dept d
 where e.deptno = d.deptno 
and d.LOC = 'DALLAS';

Q. 'SMITH'의 사원 이름, 부서번호와 'SMITH'와 같은 부서에 있는 사원 이름을 출력하시오.
(해당 사원과 같은 부서에 있는 사원을 '동료'라고 표시하세요)

 select e.ename,e.deptno,ee.ename 동료 
 from emp e, emp ee
where e.deptno = ee.deptno
and e.ename = 'SMITH' 
and ee.ename <> 'SMITH'; 
profile
꾸준함의 가치를 믿는 개발자

0개의 댓글