WITH TEMP AS (
SELECT '1' CD, 'AAA' DESC_TEXT FROM DUAL
UNION ALL
SELECT '1' CD, 'ASD' DESC_TEXT FROM DUAL
UNION ALL
SELECT '2' CD, 'SDF' DESC_TEXT FROM DUAL
UNION ALL
SELECT '3' CD, 'ASA' DESC_TEXT FROM DUAL
UNION ALL
SELECT '3' CD, 'RRR' DESC_TEXT FROM DUAL
UNION ALL
SELECT '4' CD, 'DDD' DESC_TEXT FROM DUAL
)
SELECT A.*
, RANK() OVER(ORDER BY CD) RN
, DENSE_RANK() OVER (ORDER BY CD) DRN
FROM TEMP A
SELECT '1' CD, 'AAA' DESC_TEXT FROM DUAL
UNION ALL
SELECT '1' CD, 'ASD' DESC_TEXT FROM DUAL
UNION ALL
SELECT '2' CD, 'SDF' DESC_TEXT FROM DUAL
UNION ALL
SELECT '3' CD, 'ASA' DESC_TEXT FROM DUAL
UNION ALL
SELECT '3' CD, 'RRR' DESC_TEXT FROM DUAL
UNION ALL
SELECT '4' CD, 'DDD' DESC_TEXT FROM DUAL
)
SELECT A.*
, RANK() OVER(ORDER BY CD) RN
, DENSE_RANK() OVER (ORDER BY CD) DRN
FROM TEMP A
* 주의 : RANK와 DENSE_RANK는 ORDER BY 절에서 쓰이는 컬럼이 있어야 사용가능하다.
일단 쿼리를 실행하여보자!!
아래는 결과값이다.
RANK를 사용하면 로우갯수에 상관을 받아 1, 2, 2(3), 4, 4(5), 6 이런식으로 카운터가 되며,
DENSE_RANK를 사용하면 로우갯수 상관없이 1, 2, 2, 3, 4 이런식으로 건너뛰지 않고 카운트된다.
*설명 : ()괄호는 세번째행을 나타냄
순위나 순서를 구분지을때 적절히 사용해보자!! :)
반응형
'아이티 > oracle&DB' 카테고리의 다른 글
오라클 (Oracle) 에서 소수점처리 어떻게 하지? (0) | 2011.12.28 |
---|---|
decode의 활용법 (0) | 2011.12.15 |
오라클에서 Table 정보 및 Column정보 조회하기 / 데이터사전 (0) | 2011.11.17 |
msvcp71.dll msvcr71.dll 오류 해결법 (0) | 2011.04.13 |
[ORACLE/SQL] 함수 - 숫자함수 (0) | 2010.02.22 |
Java를 이용한 CLOB, BLOB 조작법 (0) | 2009.11.10 |
DataType 중 Blob을 아세요...??? (0) | 2009.11.10 |
oracle에서 access방법 (0) | 2009.09.29 |
랜덤하게 시리얼번호(serial number) 생성하기 (0) | 2009.02.13 |
시간간격을 년, 개월, 일수로 보기 (0) | 2009.02.13 |