SELECT ename, a.deptno, b.deptno, dname, loc
FROM EMP a, DEPT b
WHERE A.DEPTNO (+)= B.DEPTNO;
^
|
outer join : 조인이 안된 모든 자료를 표시 ..
자료가 없는 데이터 까지 조인해서 검색한것을 표시 .
SELECT deptno, COUNT(empno) FROM (
SELECT dept.deptno, empno, ename FROM EMP, DEPT
WHERE emp.deptno(+) = dept.deptno)
GROUP BY deptno
/*12/10일 문제
특정 부서 번호에 평균 , 최대 값, 최소값(union all 사용)
결과 값
================================
| 평균 | 최대 | 최소(sal)
================================
10 | | |
================================
표시 한로우에 표시 해야 함
결과 값 ..
/* sql*/
SELECT AVG(sal) a, 0 b, 0 c FROM EMP WHERE deptno = 10
UNION all
SELECT 0 a, MAX(sal) b, 0 c FROM EMP WHERE deptno = 10
UNION all
SELECT 0 a, 0 b,min(sal) c FROM EMP WHERE deptno = 10 ;
/*결과값*/
2916.66666666667 0 0
0 5000 0
0 0 1300
*/
SELECT LEVEL,ename, empno,mgr FROM emp
START WITH ename = 'KING'
CONNECT BY PRIOR empno=mgr
start 찾고자 하는 데이타 ex) ename = 'KING'
connect by prior 상위에 데이타 empno = mgr
결과값 상위 하위
level ename empno mgr
============================
1 KING 7839 null
2 JONES 7566 7839
3 SCOTT 7788 7566
4 ADAMS 7876 7788
SELECT LPAD(' ',3*LEVEL)||ename, empno,mgr FROM emp
START WITH ename = 'KING'
CONNECT BY PRIOR empno=mgr
lpad를 해서 앞에 공백 문자를 만든다.
결과값
====================================
ename empno mgr
KING 7839
JONES 7566 7839
SCOTT 7788 7566
ADAMS 7876 7788
FORD 7902 7566
SMITH 7369 7902
/* DECODE를 이용하여 그룹 지어서 SQL
SELECT DECODE(RN,1,DEPTNO), MAX(DEPTNO), SUM(SAL) FROM
EMP,( SELECT 1 rn FROM dual UNION ALL
SELECT 2 FROM dual) GROUP BY DECODE(RN,1,DEPTNO))
*/
결과문 ...
30 30 9400
30 29025
20 20 10875
10 10 8750