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

+ Recent posts