https://leetcode.com/problems/rank-scores/
위 문제를 풀면서 알게 된 사실을 정리.
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 |
댓글