์ฌ์๋ค์ ๊ธ์ฌ๋ฅผ ๋ง์ด ๋ฐ๋ ์์๋๋ก ์์๋ฅผ ์ถ๋ ฅํ์์ค.
ORACLE SCOTT ๊ณ์ ์ EMPLOYEES ํ ์ด๋ธ์ ์ด์ฉํด์ ์ถ๋ ฅํ ๊ฒฐ๊ณผ์ ๋๋ค.
์์๋ฅผ ๋งค๊ธฐ๋ ๋ฐฉ๋ฒ์๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๋ถ์ํจ์๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด ์๋์ฒ๋ผ ๊ตฌํ ๊ฒ ์ ๋๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
SELECT
EMPNO
,ENAME
,SAL
,DEPTNO
,ROWNUM AS RNK
FROM
(
SELECT
*
FROM
EMP
ORDER BY SAL DESC
);
|
SELECT ์ ์ ORDER BY ์ด์ ์ ์คํ๋๊ธฐ ๋๋ฌธ์ SUBQUERY๋ฅผ ์ด์ฉํด์ ์์๋ฅผ ๋งค๊ธธ์ ์์ต๋๋ค. ์ ์ฒด ์์์ค ์ผ๋ถ๋ฅผ ์ถ๋ ฅํ๊ธฐ ์ํด์๋ TOP-N์ฟผ๋ฆฌ๋ ROW LIMIT CLAUSE๋ฅผ ์ฌ์ฉํด์ ์ถ๋ ฅ์ด ๊ฐ๋ฅํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์๋ ๋งํฌ๋ฅผ ์ฐธ์กฐ!
๊ทธ๋ผ ๋ถ์ํจ์๋ฅผ ์ด์ฉํ๋ฉด ์ด๋จ๊น์?
1
2
3
4
5
6
7
|
SELECT
EMPNO
,ENAME
,SAL
,DEPTNO
,ROW_NUMBER() OVER(ORDER BY SAL DESC) AS RNK
FROM EMP;
|
ROW_NUMBERํจ์๋ฅผ ์ฌ์ฉํด์ ์ฝ๊ฒ ๊ตฌํ ์ ์์ต๋๋ค.
๋ถ์ํจ์์๋ ์์๋ฅผ ๋งค๊ธฐ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํจ์๊ฐ 3๊ฐ์ง ์์ต๋๋ค. ROW_NUMBER(), RANK(), DENSE_RANK() ์ธ๊ฐ์ ํจ์๋ฅผ ๋น๊ตํด์ ์ด๋ค ์ฐจ์ด๊ฐ ์๋์ง ์์๋ด ์๋ค.
ROW_NUMBER, RANK, DENSE_RANK ๋น๊ต
์์ ์์ ์์ ROW_NUMBER๋ฅผ ์ฌ์ฉํ์๋, ์ค๋ณต์ ๋ํ ์์ ์ฒ๋ฆฌ๋ ์์์ต๋๋ค. ๊ทธ๋ฅ ์์๋๋ก๋ง ๋์ดํ์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ๋์ผ ๊ฐ์ ๋ํด์ ๊ฐ์ ์์๋ก ์ถ๋ ฅํ๊ณ ์ถ์๋๋ ์ด๋ป๊ฒ ํด์ผํ ๊น์? 3๊ฐ์ง ํจ์๋ฅผ ๋์์ ์ฌ์ฉํด์ ๋น๊ตํด๋ณด๊ฒ ์ต๋๋ค.
1
2
3
4
5
6
7
8
9
|
SELECT
EMPNO
,ENAME
,SAL
,DEPTNO
,ROW_NUMBER() OVER(ORDER BY SAL DESC) AS RN_RANK
,RANK() OVER(ORDER BY SAL DESC) AS RANK
,DENSE_RANK() OVER(ORDER BY SAL DESC) AS D_RANK
FROM EMP;
|
9, 10 ,11๋ฒ ํ์ ํ์ธํด๋ณด๋ฉด ๊ฐ๊ฐ ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฅธ ๊ฒ์ ํ์ธ ํ ์ ์์ต๋๋ค.
ROW_NUMBER ํจ์
ROW_NUMBER ํจ์๋ ๋์ผ ๊ฐ์ ์๊ด์์ด ์์ฐจ์ ์ธ ๋ฒํธ๋ก ์์๋ฅผ ๋ถ์ฌํฉ๋๋ค.
RANK ํจ์
RANK ํจ์๋ ๋์ผ๊ฐ์ ๋ํด์ ๊ฐ์ ์์๋ฅผ ๋ถ์ฌํ๊ณ ๋ค์ ์์๋ ๋์ ์์๋ก ์ถ๋ ฅํฉ๋๋ค.
DENSE_RANK ํจ์
DENSE_RANK ํจ์๋ ๋์ผ๊ฐ์ ๋ํด์ ๊ฐ์ ์์๋ฅผ ๋ถ์ฌํ๊ณ ๋ค์ ์์๋ ๋์ ์ํค์ง ์๊ณ ๊ทธ๋๋ก ์์ฐจ๋ฅผ ์งํต๋๋ค.
PARTITION ORDER BY
1
2
3
4
5
6
7
|
SELECT
EMPNO
,ENAME
,SAL
,DEPTNO
,RANK() OVER(PARTITION BY DEPTNO ORDER BY SAL DESC) AS RNK
FROM EMP;
|
๋ถ์ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด, ๊ฐ ๊ทธ๋ฃน๋ณ๋ก ์์๋ฅผ ๋งค๊ธฐ๋ ์์ ์ ๊ฐ๋จํ ์ฟผ๋ฆฌ๋ก ์ถ๋ ฅ์ด ๊ฐ๋ฅํฉ๋๋ค.
RANK ์์ธก WITHIN GROUP
1
2
3
4
|
SELECT
RANK(2975) WITHIN GROUP (ORDER BY SAL DESC) AS RNK
,DENSE_RANK(2975) WITHIN GROUP (ORDER BY SAL DESC) AS D_RNK
FROM EMP;
|
RANK์ DENSE_RANKํจ์์ ์ธ์๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ํด๋น ๊ฐ์ด ๋ฒ์์ ์๋ค๋ฉด ๋ช๋ฑ์ธ๊ฐ?๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
๋๊ธ