2013년 7월 30일 화요일

[SQL 팁]CASE를 활용한 SQL문장의 통합(오엔제이프로그래밍,오라클,자바실무교육)

1.       개요
동일한 테이블을 사용하고 WHERE 조건이 비슷한 유형으로 전개되는 SQL 문은 하나로 통합될 음을 유의하고 아래 예를 참고하자.


오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷  실무전문 강의)



[첫번째 SQL]
SQL> select max(empno) from emp3
  2  where deptno > 10;

MAX(EMPNO)
----------
      7902

[두번째 SQL]
SQL>  select count(empno) from emp3
  2   where deptno > 10
  3  and   sal > 2000;

COUNT(EMPNO)
------------
     2097152


동일한 테이블에서 비슷한 조건이면서 하나는 MAX , 하나는 COUNT 값을 구하는 것이다. 번째 SQL 문의 sal > 2000 제외하고 같은 조건 절을 갖고 있다는 것을 있다.

2) 문제점

하나의 SQL 문으로 통합할 있음에도 2 개로 SQL 나누어 수행하였다.

3) 해결 방안

위의 경우 CASE 사용하면 쓰면 개의 SQL 하나로 만들어 테이블을 액세스 하게 있다다음과 같이 CASE 쓰면 SAL>2000 경우 계속 1 더해 줌으로서 전체에 SAL > 2000 값이 있는지 COUNT 해주는 것과 전체 COUNT 값도 있다.  이와 같이 번에 테이블을 액세스 있는 SQL 문을 쓰면 테이블을 번에 걸쳐 읽을 것을 읽고도 처리할 있으므로 보다 효율적인 프로그램이 되는 것이다.


SQL>  select max(empno), sum(case when sal>2000 then 1 else 0 end)
  2   from emp3
  3  where deptno > 10;

MAX(EMPNO) SUM(CASEWHENSAL>2000THEN1ELSE0END)
---------- ----------------------------------
      7902                            2097152



[출처]오라클자바커뮤니티



댓글 없음:

댓글 쓰기