描述如下:
实现思路:
实质就是要统计全表小于某一个score数值的个数。如果并列排名的话可以直接:
SELECT a.score,
(SELECT count(1)
FROM leetcode_scores
WHERE score > a.score)+1 AS rank
FROM leetcode_scores a
ORDER BY rank
但是这里多了一点要求,排名得是连续的整数。所以表里相同的score值需要先去重
SELECT a.score,
(SELECT count(DISTINCT score)
FROM leetcode_scores
WHERE score > a.score)+1 AS rank
FROM leetcode_scores a
ORDER BY rank
这里都是降序排列(从高到低排),如果升序就将大于号改小于号。