이 자료는 O'Reilly에서 나온 " Mastering Oracle SQL, 2nd Edition"을 공부하면서 몰랐던 부분만을 정리하고 있습니다.
"Mastering Oracle SQL, 2nd Edition"의 저자는 Alan Beaulieu, Sanjay Mishra 이며 2004년에 나온 책이네요.
알라딘에서 구해 볼 수 있습니다.
"Mastering Oracle SQL, 2nd Edition"의 저자는 Alan Beaulieu, Sanjay Mishra 이며 2004년에 나온 책이네요.
알라딘에서 구해 볼 수 있습니다.
Oracle GROUP 함수는 다중 사용을 지원한다. 몰랐다...
간단히 말하면 GROUP 함수 안에 GROUP 함수를 사용할 수 있다.
예를 들자면 ..
부서별 연봉 합계이다.
SQL> select deptno,sum(sal) from emp group by deptno;
DEPTNO SUM(SAL)
---------- ----------
30 9400
20 10875
10 8750
이 연봉 합계가 가장 높은 연봉 합은 다음처럼 구할 수 있다..
SQL> select max(salary) from (
SQL> select deptno,sum(sal) salary from emp group by deptno;
MAX(SALARY)
-----------
10875
이걸 중첩 GROUP operation을 쓰면 다음과 같이 쓰일 수 있다.
SQL> select max(sum(sal)) from emp group by deptno;
MAX(SUM(SAL))
-------------
10875
SQL> select max(sum(sal)),min(sum(sal)),avg(sum(sal)) from emp group by deptno;
MAX(SUM(SAL)) MIN(SUM(SAL)) AVG(SUM(SAL))
------------- ------------- -------------
10875 8750 9675
그럼 중첩 GROUP operation은 몇개까지 중첩될 수 있을까?
아래 SQL이 어떤 의미인지는 모르겠지만..
일단 3개 중첩!!
아래 SQL이 어떤 의미인지는 모르겠지만..
일단 3개 중첩!!
SQL> select max(sum(count(sal))) from emp group by deptno;
select max(sum(count(sal))) from emp group by deptno
*
ERROR at line 1:
ORA-00935: group function is nested too deeply
SQL> !oerr ora 935
00935, 00000, "group function is nested too deeply"
// *Cause:
// *Action:
GROUP function에 dept의 제한이 있는게 확인 된다.
그럼 SUBQUERY를 사용하게 되면..
SQL> select max(a) from (
SQL> select sum(b) a from (
SQL> select count(sal) b from emp group by deptno ));
MAX(A)
----------
14
잘 되는 군요.
다들 아시는 내용이겠지만, 저는 몰랐기 때문에 정리합니다
-,.-
* 여기저기서 좋다는 책 몇권 추천합니다. 고수가 되는 그날까지.. 파이팅!!
'Oracle Database' 카테고리의 다른 글
Oracle 10g에서 11g로 upgrade 할때, 기존의 hint를 삭제해야 할까요? (0) | 2010.08.09 |
---|---|
ORACLE GROUP BY와 함께 쓰이는 HAVING 절 (1) | 2010.08.06 |
Oracle Table의 통계정보를 옮기는 방법. (1) | 2010.08.03 |
Oracle datafile 생성 이후 모든 archive log는 있으나 datafile의 backup이 없는 경우 recovery (0) | 2010.07.30 |
간단히 테스트해본 oracle 11g new feature invisible index (0) | 2010.07.19 |