728x90
순서를 위한 넘버링
- ROWNUM
: 가장 일반적인 방법. 단 정렬이 되지 않는다. - RANK() OVER (ORDER BY 컬럼명 [DESC/ASC])
: 정렬과 함께 넘버링을 해준다.
: 같은 값이 있을 경우에는 같은 넘버링으로 나오게 된다. - 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
반응형
'Development > SQL' 카테고리의 다른 글
[ORACLE] 사용자가 사용하고 있는 모든 테이블 제거하기. (0) | 2024.08.02 |
---|---|
[MySql] MySql TimeZone 확인 (0) | 2024.08.02 |
[ORACLE] 계층구조 쿼리 START WITH (0) | 2020.08.12 |
[MySql] MySql Community Server 5.7.21 설치 (4) | 2018.01.27 |