티스토리 뷰
-----Self join-----
1. SMITH 회원의 매니저 구하기
매니저 구하기
------------------------------------------------------------------------------------------------------------
SMITH 의 매니저는 FORD
> select e1.ename, e2.ename from emp e1, emp e2 where e1.mgr = e2.empno and e1.ename='SMITH';
2. 모든 회원의 매니저 구하기
회원 별 매니저
----------------------------
FORD 의 매니저는 JONES
SCOTT 의 매니저는 JONES
JAMES 의 매니저는 BLAKE
TURNER의 매니저는 BLAKE
MARTIN의 매니저는 BLAKE
WARD 의 매니저는 BLAKE
ALLEN 의 매니저는 BLAKE
MILLER의 매니저는 CLARK
ADAMS 의 매니저는 SCOTT
CLARK 의 매니저는 KING
BLAKE 의 매니저는 KING
JONES 의 매니저는 KING
SMITH 의 매니저는 FORD
KING 의 매니저는 없습니다.
14 rows selected.
> select rpad(e1.ename,6,' ')||'의 매니져는'||nvl(e2.ename,' 없습니다.') from emp e1 left join emp e2 on e1.mgr = e2.empno
3. 매니저 이름 구하기
ENAME
--------
JONES
FORD
CLARK
SCOTT
BLAKE
KING
6 rows selected.
> select e2.ename from emp e1 join emp e2 on e1.mgr = e2.empno group by e2.ename;
4. 매니저의 인원수 구하기
매니저 인원수
-------------
6
> select e2.ename from emp e1 join emp e2 on e1.mgr = e2.empno group by e2.ename
5. 1등급 급여를 받는 사람 조회하기
ENAME SAL GRADE
-------------------- ---------- ----------
SMITH 800 1
ADAMS 1100 1
JAMES 950 1
>select ename, sal, grade from emp e join salgrade s on sal between losal and hisal and grade = 1;
6. 각 등급별 급여 합 조회하기
GRADE SUM_SAL
---------- ----------
1 2850
2 3800
3 3100
4 14275
5 5000
>select grade, sum(sal) from emp e join salgrade s on sal between losal and hisal group by grade order by grade
7. 위 문제에서 등급별 급여의 합이 최고인 값을 조회하기
MAX(SUM_SAL)
--------------
14275
> select max(sum(sal)) from emp e join salgrade s on sal between losal and hisal group by grade order by grade;