본문 바로가기

DB

MSSQL 순위 함수 (ROW_NUMBER 와 DENSE_RANK)

ROW_NUMBER

ROW_NUMER() OVER ([PARTITION BY expression_list] ORDER BY expresstion[DESC,ASC])

 

  • ORDER BY expresstion[DESC,ASC] : 정렬할 기준이될 컬럼 선택
  • [PARTITION BY expression_list] : 부분집합 별로 순번 생성하기 위해서 부분집합을 지정하는 것 (GROUP BY)

DENSE_RANK

DENSE_RANK() OVER ( [PARTITION BY expression_list ] ORDER BY expression [ASC | DESC] )
  • ORDER BY expresstion[DESC,ASC] : 정렬할 기준이될 컬럼 선택
  • [PARTITION BY expression_list] : 부분집합 별로 순번 생성하기 위해서 부분집합을 지정하는 것 (GROUP BY)

 

특성
ROW_NUMBER() 함수 DENSE_RANK() 함수
순위 부여 방식 각 행에 대해 중복 없는 연속적인 일련번호를 부여 동일한 값을 가진 행에 대해 같은 순위를 부여하고, 다음 순위는 해당하는 값의 개수만큼 건너뛰지 않고 부여
중복 처리 중복된 값이 있더라도 각 행에 대해 고유한 번호 부여 동일한 값을 가진 행에 대해서만 같은 순위 부여
순위 간격 순차적인 번호를 부여하여 간격이 항상 1씩 증가 중복된 값의 순위를 부여하므로 간격이 가변적일 수 있음
예시 ROW_NUMBER() OVER (ORDER BY column) DENSE_RANK() OVER (ORDER BY column)
반응형

'DB' 카테고리의 다른 글

NULL 처리함수 정리(IFNULL 함수와 NULLIF 함수의 차이점) + COALESCE 함수  (0) 2024.12.10
윈도우 함수 옵션  (0) 2024.05.22
윈도우 함수 옵션  (0) 2024.05.17
MS SQL CURSOR  (0) 2024.05.16
GROUP BY와 PARTITION BY  (0) 2024.05.16