DB/MySQL
[MySQL] DENSE_RANK() 함수
동호다찌
2023. 1. 17. 11:07
반응형
순위함수(분석함수)
결과에 순번, 순위를 매기는 함수
비집계함수 중 RANK, NTILE, DENSE_RANK, ROW_NUMBER 등이 해당된다.
SELECT <순위함수이름> (arguments) OVER ([PARTITION BY <partion_by_list>] ORDER BY <order_by_list>) FROM 테이블명; |
PARTITION BY : 동일 그룹으로 묶어줄 칼럼 명 지정
ORDER BY : Partition 정의에 지정된 컬럼에 대한 정렬 수행
DENSE_RANK() 함수
DENSE_RANK()는 RANK() 함수와 유사합니다. 하지만 RANK() 함수가 숫자를 뛰어넘었던 것에 반해 해당 함수는 숫자를 뛰어넘지 않고 순위를 부여합니다.
-- 인구수가 많은 순서대로 랭킹 지정하기
SELECT c.*, DENSE_RANK() OVER(ORDER BY Population DESC) AS rnk
FROM city c ;
London과 Delhi의 랭킹은 7,285,000로 동일해서 dense_rank_number 열에 13이라는 순위를 부여해줬습니다.
7,285,000 다음의 값인 6,789,479에게 순위를 부여할 땐 이전 순위에서 13을 2개나 부여했음에도 불구하고 숫자를 뛰어넘지 않고 13 다음의 숫자인 14라는 순위를 부여해줬습니다.
구분막(파티션) 내의 순위 부여하기
-- 도시코드별 인구수 랭킹 지정하기
SELECT c.*, DENSE_RANK() OVER(PARTITION BY CountryCode ORDER BY Population DESC) AS rnk
FROM city c ;
반응형