์ฌ์๋ค์ ๊ธ์ฌ๋ฅผ ๋ง์ด ๋ฐ๋ ์์๋๋ก ์์๋ฅผ ์ถ๋ ฅํ์์ค.
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๋ฅผ ์ฌ์ฉํด์ ์ถ๋ ฅ์ด ๊ฐ๋ฅํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์๋ ๋งํฌ๋ฅผ ์ฐธ์กฐ!
[Oracle] ์ค๋ผํด ํ์ด์ง ์ฟผ๋ฆฌ ์ฝ๊ฒ ๋ง๋ค๊ธฐ Row Limiting Clause ์ฌ์ฉ :: ๋ง์ด์๋ชฝ
์ค๋ผํด ํ์ด์ง ์ค๋ผํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ด์ง ์ฟผ๋ฆฌ๋ ์ด๋ป๊ฒ ์์ฑํ ๊น์? ํฌํธ ์ฌ์ดํธ์์ ๊ฒ์์ ํ์ ๋, ๊ฒ์ํ ํํ์ ์น์ฌ์ดํธ์์ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ๋, ํ๋ฒ์ ๋ชจ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์๊ธฐ ๋๋ฌธ์ ํ์ด์ง ์ฒ๋ฆฌ๋ฅผ ํ์ฌ ํ..
myjamong.tistory.com
๊ทธ๋ผ ๋ถ์ํจ์๋ฅผ ์ด์ฉํ๋ฉด ์ด๋จ๊น์?
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;
|
๋ถ์ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด, ๊ฐ ๊ทธ๋ฃน๋ณ๋ก ์์๋ฅผ ๋งค๊ธฐ๋ ์์ ์ ๊ฐ๋จํ ์ฟผ๋ฆฌ๋ก ์ถ๋ ฅ์ด ๊ฐ๋ฅํฉ๋๋ค.
[Oracle] OVER ... PARTITION BY ๋ถ์์ ANALYTIC FUNCTION :: ๋ง์ด์๋ชฝ
์ฌ์ ์ ๋ณด๋ฅผ ์ ๋ ฅํ๋๋ฐ, ์ ์ฒด ๊ธ์ฌ ํ๊ท ๊ฐ๊ณผ ํจ๊ป ์ถ๋ ฅํ์์ค. ORACLE SCOTT ๊ณ์ EMP ํ ์ด๋ธ๋ก ์ถ๋ ฅ๋ ๊ฒฐ๊ณผ์ ๋๋ค. ์ ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด ์ด๋ป๊ฒ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ์ค๊ฑด๊ฐ์? 1 2 3 4 5 6 7 8 SELECT DEPTNO ,EMPNO..
myjamong.tistory.com
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ํจ์์ ์ธ์๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ํด๋น ๊ฐ์ด ๋ฒ์์ ์๋ค๋ฉด ๋ช๋ฑ์ธ๊ฐ?๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
๋๊ธ