SELECT a.사원번호, MIN(a.성명), MIN(급여총액),
NVL(COUNT( * ),0) 고령자수
FROM 사원 a, 급여 b, 가족 c
WHERE c.사원번호( + ) = b.사원번호
and c.생년월일( + ) < '19280101'
and a.사원번호 = b.사원번호
and b.년월 = '199801'
and b.급여총액 >= 3500000
GROUP BY a.사원번호
<NESTED LOOPS 조인인 경우>
SORT (GROUP BY)
NESTED LOOPS (OUTER)
NESTED LOOPS
TABLE ACCESS (BY ROWID) OF '급여'
INDEX (RANGE SCAN) OF '년월_IDX'
TABLE ACCESS (BY ROWID) OF '사원'
INDEX (UNIQUE SCAN) OF '사원_PK'
TABLE ACCESS (BY ROWID) OF '가족'
INDEX (RANGE SCAN) OF '가족_PK'
<SORT MERGE 조인인 경우>
SORT (GROUP BY NOSORT)
MERGE JOIN
MERGE JOIN (OUTER)
SORT (JOIN)
TABLE ACCESS (BY ROWID) OF '급여'
INDEX (RANGE SCAN) OF '년월_IDX'
SORT (JOIN)
TABLE ACCESS (BY ROWID) OF '가족'
INDEX (RANGE SCAN) OF '생년월일_IDX'
SORT (JOIN)
TABLE ACCESS (FULL) OF '사원'
SELECT /*+ ORDERED USE_NL(x y) */
y.사원번호, y.성명, 급여총액, 고령자수
FROM
(
SELECT /*+ USE_MERGE( b c) */
b.사원번호, 급여총액, 고령자수
FROM 급여 b,
( SELECT 사원번호, COUNT( * ) 고령자수
FROM 가족
WHERE 생년월일 < '19280101'
GROUP BY 사원번호
) c
WHERE c.사원번호( + ) = b.사원번호
and b.년월 = '199801'
and b.급여총액 >= 3500000
) x, 사원 y
WHERE y.사원번호 = x.사원번호 ;
- 강좌 URL : http://www.gurubee.net/lecture/2491
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.