본문 바로가기
Database/MySQL

[MySQL] rank함수 - 랭킹

by 데이터현 2022. 3. 31.

https://leetcode.com/problems/rank-scores/

 

Rank Scores - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

위 문제를 풀면서 알게 된 사실을 정리.

 

MySQL 8 버전 이상부터는 rank, dense_rank 함수 사용 가능

MySQL 버전 확인

SELECT VERSION()

rank 함수와, dense_rank 함수 모두 같은 순위는 같은 랭크로 처리됨

rank함수는 순위가 밀려남 EX) 1, 1, 3, 4, 5

dense_rank는 그대로 유지 EX) 1, 1, 2, 3, 4

 

위 문제 풀이

SELECT score, dense_rank() over (order by score desc) AS "rank" FROM Scores;

""를 제외한 그냥 AS rank라고 하면 에러남(함수로 먼저 판단하는 듯 보임)

 

변수 사용

SELECT 
    score,
    @rank := @rank + (@prev != (@prev := score)) "rank"
FROM 
    Scores,
    (SELECT @rank := 0, @prev := -1) init
ORDER BY score DESC

 

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

[MySQL] 데이터 삭제  (0) 2022.03.31
[MySQL] 그룹별 상위 N 개  (0) 2022.03.31
[MySQL] 변수 처리(local variable vs. user variable)  (0) 2022.03.31
[MySQL] N번째로 큰 값  (0) 2022.03.31
[MySQL] JOIN 이후 NULL 처리  (0) 2022.03.31

댓글