常用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 RankFROM Scores, (SELECT @pm := 0,@fs := null) aORDER 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 RankFROM Scores a, (SELECT DISTINCT Score FROM Scores) bGROUP BY a.id,a.ScoreORDER BY a.Score DESC;