0
点赞
收藏
分享

微信扫一扫

MySQL实现分数排名问题

灵魂跑者 2022-12-03 阅读 123


数据库记录

mysql> select * from scores;
+----+-------+
| Id | Score |
+----+-------+
| 1 | 3.50 |
| 2 | 3.65 |
| 3 | 4.00 |
| 4 | 3.85 |
| 5 | 4.00 |
| 6 | 3.65 |
+----+-------+

 

分数排名问题

SELECT s.score, (
select count(distinct si.Score) from scores si where si.score >= s.Score
) as 'Rank'
FROM `scores` s
order by s.score desc

查询结果

+-------+------+
| score | Rank |
+-------+------+
| 4.00 | 1 |
| 4.00 | 1 |
| 3.85 | 2 |
| 3.65 | 3 |
| 3.65 | 3 |
| 3.50 | 4 |
+-------+------+

 

建表语句

CREATE TABLE `scores` (
`Id` bigint(18) NOT NULL AUTO_INCREMENT,
`Score` decimal(10,2) DEFAULT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

INSERT INTO `scores` VALUES (1, 3.50);
INSERT INTO `scores` VALUES (2, 3.65);
INSERT INTO `scores` VALUES (3, 4.00);
INSERT INTO `scores` VALUES (4, 3.85);
INSERT INTO `scores` VALUES (5, 4.00);
INSERT INTO `scores` VALUES (6, 3.65);


举报

相关推荐

0 条评论