DB/MySQL

[MySQL] ROW_NUMBER() 함수

동호다찌 2023. 1. 17. 11:19

순위함수(분석함수)

결과에 순번, 순위를 매기는 함수

비집계함수  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 정의에 지정된 컬럼에 대한 정렬 수행


 ROW_NUMBER() 함수

ROW_NUMBER() 함수입니다. 정말 간단한데 각 행에 연속적인 숫자를 부여합니다.  비록 ranking_score가 동점인 경우가 있더라도 동점을 무시하고 각 행마다 다른 순위를 부여합니다.


 

-- 인구수가 많은 순서대로 랭킹 지정하기
SELECT c.*, ROW_NUMBER() OVER(ORDER BY Population DESC) AS rnk
  FROM city c ;

동일한 중복값이 발생해도 일련번호를 지정해줍니다.

 

구분막(파티션) 내의 순위 부여하기

-- 도시코드별 인구수 랭킹 지정하기 
SELECT c.*, ROW_NUMBER() OVER(PARTITION BY CountryCode ORDER BY Population DESC) AS rnk
  FROM city c ;

'DB > MySQL' 카테고리의 다른 글

[MySQL] LAG() 함수  (0) 2023.01.17
[MySQL] LEAD() 함수  (0) 2023.01.17
[MySQL] DENSE_RANK() 함수  (0) 2023.01.17
[MySQL] RANK() 함수  (0) 2023.01.17
[MySQL] 쿼리 작성 및 최적화  (0) 2022.11.22