一个 mysql 表,只有学生姓名`name`和学生成绩`grade`两列,现在要 SELECT 出排名前十的同学,该如何写 SQL 语句?
阿蛮
竞技选手
 0
2020-09-13 09:03:26

不仅要考虑满分的情况。。准确地说,同一个分数有 n 个人,不论 n 为多大,都只视为 1 个人。

所以满分 100 分,分数都是自然数的话:

12 个满分,正确的返回结果应该有 12 个同学。

9 个满分,2 个 99 分,正确的返回结果应该有 11 个同学。

8 个满分,2 个 99 分,1 个 98 分,正确的返回结果应该有 10 个同学,那个 98 分的同学被不在结果内。

8 个满分,1 个 99 分,2 个 98 分,正确的返回结果应该有 11 个同学,两个 98 分的同学全部在结果内。

各位,如果排名前十的成绩分别是 100 分 99 分 98 分 97 分 …… 91 分

但 100 分有 8 个 99 分有 1 个 98 分有 2 个

那么想要的结果中有 11 个学生

先按成绩分组取前十再 SELECT 出学生的思路里,如何知道前十的学生是十一个人?

而如果 100 分 7 个 99 分 1 个 98 分 1 个 97 分 6ge

那结果中又应当有 15 个学生

如何知道前十的学生是 15 个人?

当然,取出结果集后让 java 或者什么业务层来干是很轻易的了。。就是不知道纯 SQL 做得到吗?

关键词: