본문 바로가기
Web programming/SQL & DB

ROWNUM / OUDER BY / 순위를 반환하는 함수 ROW_NUMBER, RANK, DENSE_RANK

by Skilly 2020. 4. 13.

 

ROWNUM : 쿼리 내에서 사용 가능한 가상 컬럼. (확인하고자 하는 데이터에 가상으로 번호를 매김)


예문 :

회원 목목에서 상위 5명만 조회 (상위 5개의 데이터) 

SELECT ROWNUM, NOTICE.* 
FROM NOTICE 
WHERE ROWNUM BETWEEN 1 AND 5; 

 

 

ORDER BY : 특정 값에 대한 순위를 매기고 싶을 때 사용

 

- ASC 를 함께 쓰면 오름차순 
- DESC 를 함께 쓰면 내림차순

 

예문 :

SELECT ROWNUM, N.* 
FROM (
SELECT * 
        FROM NOTICE 
        ORDER BY REGDATE DESC
) N;    

 

 

 

ORDER BY 절을 사용해서 특정 값에 대한 순위를 매겼을 때, 동일한 등수가 나온 경우에는

ROW_NUMBER / RANK / DENSE_RANK 절을 사용해서 공동 등수를 동일한 순위로 매기거나 또는 순위를 다르게 매기도록 함 (OVER* 절과 함께 사용)

 

 

 

 

ROW_NUMBER( )

 

예문 :

SELECT 
    ROW_NUMBER( ) OVER (ORDER BY REGDATE DESC) NUM, 
    N.*
FROM NOTICE N;

 

 

 

 

RANK( )

 

예문 :

SELECT 
    ROW_NUMBER() OVER (ORDER BY REGDATE DESC) NUM, 
    RANK() OVER (ORDER BY HIT DESC) RANK,
    N.*
FROM NOTICE N;

 

 

 

DENSE_RANK( )

 

예문 :

SELECT 
    ROW_NUMBER() OVER (ORDER BY REGDATE DESC) NUM, 
    DENSE_RANK() OVER (ORDER BY HIT DESC) "RANK", 
    N.* 
FROM NOTICE N; -- 공동 랭킹이 있을 경우에 하나의 등수로 봄

 

 

 

 

 

 

반응형