创建表
Create table If Not Exists Scores (Id int, Score DECIMAL(3,2));
insert into Scores (Id, Score) values ('1', '3.5');
insert into Scores (Id, Score) values ('2', '3.65');
insert into Scores (Id, Score) values ('3', '4.0');
insert into Scores (Id, Score) values ('4', '3.85');
insert into Scores (Id, Score) values ('5', '4.0');
insert into Scores (Id, Score) values ('6', '3.65');
SELECT * FROM Scores;
SQL查询,方式一(推荐)
SELECT Score,
CASE
WHEN @fs = Score THEN @pm
WHEN @fs := Score THEN @pm := @pm + 1
END Rank
FROM Scores,
(SELECT @pm := 0,@fs := null) a
ORDER BY Score DESC;
SQL查询,方式二
SELECT a.Score, SUM(CASE WHEN b.Score >= a.Score THEN 1 END) as Rank
FROM Scores a,
(SELECT DISTINCT Score FROM Scores) b
GROUP BY a.id,a.Score
ORDER BY a.Score DESC;