数据库记录
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);