—— 阿尔伯特·爱因斯坦

程序员の奇妙冒险

常用SQL笔记MySQL
2025-04-08 23:57阅读:63评论:0

MySQL 查询出成绩表排名,两种实现方式

创建表 SQL查询,方式一(推荐) SQL查询,方式二

_PROTECTED0__
sql
1
2
3
4
5
6
7
8
9
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;
 
_PROTECTED0__
sql
1
2
3
4
5
6
7
8
9
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;
 
_PROTECTED0__
sql
1
2
3
4
5
6
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;
 
评论(0)
暂无评论来抢沙发吧~