반응형

윈도우 xp 시디키 확인 및 체인지
반응형


☞ 집합 쿼리(UNION, INTERSECT, MINUS)
 
  집합 연산자를 사용시 집합을 구성할 컬러의 데이터 타입이 동일해야 합니다.
 
◈ UNION : 합집합
◈ UNION ALL : 공통원소 두번씩 다 포함한 합집합
◈ INTERSECT : 교집합
◈ MINUS : 차집합


☞ UNION

 ◈ UNION은 두 테이블의 결합을 나타내며, 결합시키는 두 테이블의 중복되지 않은 값들을 반환 합니다.
 
 
SQL>SELECT deptno FROM emp
        UNION
        SELECT deptno FROM dept;
 
    DEPTNO
----------
        10
        20
        30
        40



☞ UNION ALL

◈ UNION과 같으나 두 테이블의 중복되는 값까지 반환 합니다.
 
SQL>SELECT deptno FROM emp
        UNION ALL
       SELECT deptno FROM dept;
 
   DEPTNO
---------
       20
       30
       30
       20
       30
       30
       10
       20
       10
       30
....



☞ INTERSECT

INTERSECT는 두 행의 집합중 공통된 행을 반환 합니다.
 
SQL>SELECT deptno FROM emp
        INTERSECT
        SELECT deptno FROM dept;
   
    DEPTNO
----------
        10
        20
        30



☞ MINUS

MINUS는 첫번째 SELECT문에 의해 반환되는 행중에서 두번째 SELECT문에 의해 반환되는 행에
    존재하지 않는 행들을 반환 합니다.
 
SQL>SELECT deptno FROM dept
        MINUS
        SELECT deptno FROM emp;
 
    DEPTNO
----------
        40

  ================================================
    * 오라클 정보공유 커뮤니티 oracleclub.com
    * http://www.oracleclub.com
    * http://www.oramaster.net
    * 강좌 작성자 : 김정식 (oramaster _at_ naver.com)
  ================================================
반응형

oracle DECODE 함수 사용법

 

* DECODE란 오라클에서만 지원하는 함수로서SELECT문장 내에서 비교연산을 수행해 주는 아주 편리한 함수입니다.

형식은 다음과 같이 사용하시면 됩니다.


DECODE(deptname, 'A',1,0)
-> deptname
'A'와 같으면 1을 갖고 아니면 0을 갖게 됩니다.

 

또는 SUM함수로 합계를 내줄 수 있습니다.
SUM(DECODE(deptname, 'A',1,0)
-> deptname
'A'와 같으면, 1을 누적하고,아니면 0을 갖게 됩니다.

 

2 DECODE문도 허용됩니다. 다음을 보도록 하겠습니다.

DECODE(deptname, 'A', DECODE(name,'KIM',1),0)
-> deptname
'A'와 같고, name 'KIM'이면, 1을 같고, 아니면, 0을 갖는다.

 

2 DECODE문을 쓸 때 두 개의 DECODE문은 AND연산으로 수행됨을
명심하길 바랍니다.

 

예제) 사원테이블(PA06MR0)에서 영문 성이 'KIM'으로 시작하는 사람과 'LEE'로 시작하는 사람의 합을 구하라. 단 입사년도가 올해(1998)인 사람의 합을 구하라.

 

SELECT EMPNAME, SUM(DECODE(SUBSTR(EMPNAME,1,3),'KIM',1,0)
                             + DECODE(SUBSTR(EMPNAME,1,3),'LEE',1,0)),
FROM tableName
WHERE SUBSTR(entondate,1,4) = '1998';
GROUP BY EMPNAME;

+ Recent posts