inblog logo
|
{CODE-RYU};
    DBMS

    [DBMS] 순위 함수

    류재성's avatar
    류재성
    Dec 04, 2024
    [DBMS] 순위 함수
    Contents
    1. ROW_NUMBER()2. RANK()3. DENSE_RANK()4. NTILE()
     
    💡
    순위 함수는 결과에 순번 또는 순위를 매기는 역할을 한다. 함수 종류로는 RANK(), DENSE_RANK(), ROW_NUMBER(), NTILE() 가 있다. 형식은 다음과 같다.
     
    <함수이름> () OVER ( [PARTITION BY <컬럼....>] ORDER BY <컬럼명...> )

    1. ROW_NUMBER()

    💡
    ROW_NUMBER() 은 각 행에 고유한 번호를 부여하는 함수이다. 고유한 번호를 부여하기 때문에 일치하는 값이 있더라도 다른 번호를 부여한다.
     
    USE sqlDB; SELECT ROW_NUMBER() OVER(ORDER BY height DESC) [키큰순위],name,addr,height FROM userTb1
     
    notion image
     
    키가 큰 순서로 정렬했을 때 같은 키를 가진 사람이 있으나 순위는 2등 3등으로 표시된다.
     
    이번에는 전체 순위가 아닌 각 지역별로 순위를 주려고 한다. 이런 경우 PARTITION BY 절을 사용한다.
     
    USE sqlDB; SELECT addr, ROW_NUMBER() OVER(PARTITION BY addr ORDER BY height DESC, name ASC) [지역별키큰순위],name,height FROM userTb1
    notion image
     

    2. RANK()

    💡
    RANK()함수는 각 행에 순위를 부여한다. 동일한 값이 있을 경우 동일한 순위를 부여한다. 중요한 차이점은 순위가 중복되면 그다음 순위가 건너뛴다는 점이다.
     
    SELECT RANK() OVER(ORDER BY height DESC) [키큰순서], name, addr, height FROM userTb1
    notion image
     
    동일한 값은 동 순위를 부여하지만 그 다음 순위는 건너 띈 4등이 부여된다.
     

    3. DENSE_RANK()

    💡
    DENSE_RANK() 함수도 각 행에 순위를 부여하며, 동일한 값이 있을 경우 동일한 순위를 부여한다. RANK() 함수와의 차이는 DENSE_RANK() 는 동일한 순위 다음 오는 순위가 연속된다는 점이다.
     
    SELECT DENSE_RANK() OVER(ORDER BY height DESC) [키큰순서], name, addr, height FROM userTb1
    notion image
     
    동일한 순위 다음 순위가 3등으로 부여가 된다.
     

    4. NTILE()

    💡
    NTILE() 함수는 데이터를 지정한 N개의 그룹으로 나눈 후, 해당 그룹에 순번을 부여한다.
     
    SELECT NTILE(4) OVER(ORDER BY height DESC) [반번호],name,addr,height FROM userTb1
     
    notion image
     
    4개의 그룹으로 지정하면 10개의 데이터가 3,3,2,2 개의 그룹으로 나눠진 후 순번이 부여된다.
     
     
    Share article

    {CODE-RYU};

    RSS·Powered by Inblog