Database/MySQL
[MySQL] rank함수 - 랭킹
데이터현
2022. 3. 31. 19:32
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