반응형
순위함수(분석함수)
결과에 순번, 순위를 매기는 함수
비집계함수 중 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 ;
반응형
'DB > MySQL' 카테고리의 다른 글
[MySQL] LEAD() 함수 (0) | 2023.01.17 |
---|---|
[MySQL] ROW_NUMBER() 함수 (0) | 2023.01.17 |
[MySQL] RANK() 함수 (0) | 2023.01.17 |
[MySQL] 쿼리 작성 및 최적화 (0) | 2022.11.22 |
[MySQL] 쿼리문 통계(일간/주간/월간/기간별), DATE_FORMAT() (0) | 2022.11.11 |