본문 바로가기

Development/SQL

인덱스 넘버링

728x90
순서를 위한 넘버링

  1. ROWNUM
    : 가장 일반적인 방법. 단 정렬이 되지 않는다.

  2. RANK() OVER (ORDER BY 컬럼명 [DESC/ASC])
    : 정렬과 함께 넘버링을 해준다.
    : 같은 값이 있을 경우에는 같은 넘버링으로 나오게 된다.

  3. ROW_NUMBER() OVER (ORDER BY 컬럼명 [DESC/ASC])
    : 정렬과 함게 넘버링을 해준다.
    : 같은 값이 있을 경우에는 먼저 SLECT된 ROW에 우선권을 준다.

2번(RANK( ))과 3번(ROW_NUMBER( ))의 차이는 다음과 같다.

column_value
RANK()
ROW_NUMBER()
0
1
1
1
2
2
2
3
3
2
3
4
3
5
5
3
5
6
4
7
7
5
8
8
6
9
9
7
10
10


SELECT
COLUMN_VALUE,
RANK() OVER (ORDER BY COLUMN_VALUE) AS RANK,
ROW_NUMBER() OVER (ORDER BY COLUMN_VALUE) AS ROW_NUMBER
FROM
(
WITH T1 (CN1,CN2,CN3,CN4,CN5,CN6,CN7,CN8,CN9,CN10) AS 
(
SELECT 0,1,2,2,3,3,4,5,6,7 FROM DUAL
)
SELECT 
CV AS COLUMN_VALUE
FROM 
T1
UNPIVOT ( CV FOR CN IN (CN1,CN2,CN3,CN4,CN5,CN6,CN7,CN8,CN9,CN10))
);

쿼리 실행 결과물 :: 





728x90
반응형