윈도우 함수) RANK(), DENSE_RANK(), ROW_NUMBER()

허승희·2025년 7월 18일
  • RANK()
    동점인 것은 같은 랭킹 부여, 다음 랭킹은 동점 랭킹을 부여한 숫자를 제외하고 더 큰 랭킹 부여
    EX) 4등이 동점인 팀 2개가 있다. 다음은 6등

  • DENSE_RANK() ->밀도가 높다. 숫자를 비워두지 않는다.
    동점인 것은 같은 랭킹 부여하지만, 다음 랭킹은 그대로 +1인 랭킹
    EX) 4등이 동점인 팀이 2개가 있지만 4등,4등 다음은 그대로 5등

  • ROW_NUMBER() -> 행에 번호를 매기는 아이. 다 다른 번호겠지?
    어떻게 해서든 넘버링을 한다. 행에 넘버를 매겨주겠다. 행마다 다 다른 숫자를 매겨준다.

    SELECT measured_at
    , RANK() OVER(ORDER BY pm10 DESC) AS rk
    , DENSE_RANK() OVER(ORDER BY pm10 DESC) AS dense_rk
    , ROW_NUMBER() OVER(ORDER BY pm10 DESC) AS row_n
    FROM measurements
    ORDER BY rk

0개의 댓글