select sum(decode(d.loc,'NEW YORK',sal,0)) as "NEW YORK"
,sum(decode(d.loc,'DALLAS',sal,0)) as "DALLAS"
,sum(decode(d.loc,'CHICAGO',sal,0)) as "CHICAGO"
from emp e, dept d
where e.deptno = d.deptno;
select *
from (select d.loc, e.sal
from emp e, dept d
where e.deptno = d.deptno)
pivot (sum(sal) for loc in ('NEW YORK','DALLAS','CHICAGO'));
Q. 5-14 어느 부서위치에 사원이 배치 되지 않았는지 확인하시오
select e.ename, d.loc
from emp e, dept d
where e.deptno (+) = d.deptno;
Q. 5-15 이름, 부서위치를 출력하는데 이름쪽에는 데이터가 나오는 데 부서위치에는 데이터 가 나오지 않는 결과를 출력하시오
select e.ename, d.loc
from emp e, dept d
where e.deptno = d.deptno(+);
Q. 5-16 양쪽에 다 아우터 조인 사인을 써서 결과를 보게하려면 어떻게 해야하는가 ?
select e.ename, d.loc
from emp e full outer join dept d
on (e.deptno = d.deptno) ;
Q. 5-17 부서위치, 부서위치별 토탈월급을 출력하시오
select d.loc, nvl(sum(e.sal),0)
from emp e, dept d
where e.deptno (+) = d.deptno
group by d.loc;
Q. 5-18 부서위치, 부서위치별 인원수를 출력하는데 사원이 없는 부서위치는 인원수가 0 으 로 출력되게 하시오
select d.loc, nvl(count(e.ename),0)
from emp e, dept d
where e.deptno(+) = d.deptno
group by d.loc;
Q. 5-19 사원이름, 관리자의 이름을 출력하시오
select e.ename, m.ename
from emp e, emp m
where e.mgr = m.empno(+);
Q. 5-20 사원 이름, 관리자 이름을 출력하는데 관리자 보다 더 많은 월급을 받는 사원들만 출력하시오
select e.ename, m.ename
from emp e, emp m
where e.mgr = m.empno and e.sal > m.sal;
Q. 5-21 사원이름, 관리자 이름을 출력하는데 관리자보다 먼저 입사한 사원들만 출력하시오
select e.ename, m.ename
from emp e, emp m
where e.mgr = m.empno
and e.hiredate < m.hiredate;
Q. 5-22 사원이름, 부서위치, 월급, 급여등급(grade) 를 출력하시오
select e.ename, d.loc, e.sal, s.grade
from emp e, dept d, salgrade s
where e.deptno = d.deptno
and e.sal between s.losal and s.hisal;
Q. 5-23 이름과 부서위치를 출력하는데 on 절을 사용한 조인으로 구현하시오
select e.ename, d.loc
from emp e join dept d
on (e.deptno = d.deptno);
Q. 5-24 직업이 SALESMAN 인 사원들의 이름과 부서위치와 직업을 출력하시오 !(ON 절을 사 용한 조인으로 수행)
select e.ename, d.loc, e.job
from emp e join dept d
on (e.deptno = d.deptno)
where e.job = 'SALESMAN';
Q. 5-25 이름, 월급, 부서위치, 급여등급을 출력하는데 ON 절을 사용한 조인으로 수행하시오
select e.ename, d.loc, e.job, s.grade
from emp e join dept d
on (e.deptno = d.deptno)
join salgrade s
on(e.sal between s.losal and s.hisal);
Q. 5-26 이름과 부서위치를 출력하는데 using 절을 사용한 조인으로 수행하시오
select e.ename, d.loc
from emp e join dept d
using (deptno);
Q. 5-27 이름과 부서위치를 출력하는데 naturual 조인으로 수행하시오
select e.ename, d.loc
from emp e natural join dept d;
Q. 5-28 이름과 부서위치를 출력하는데 cross join 하시오
select e.ename, d.loc
from emp e cross join dept d;
Q. 5-29 이름과 부서위치를 출력하는 아래의 SQL 을 ANSI 문법으로 수행하시오
select e.ename, d.loc
from emp e, dept d
where e.deptno(+) = d.deptno;
select e.ename, d.loc
from emp e right outer join dept d
on (e.deptno = d.deptno);