如何解决MYSQL:编写查询以查找学生 X 的考试成绩即 STUDENT 中第 213 名的 STUDENT.SCORE
某所大学将学生的标准化考试成绩存储在名为 STUDENT 的表中。学生 X 在测试中排名第 213。编写查询以查找学生 X 的考试成绩(即 STUDENT 中第 213 位的 STUDENT.score)。
Table Name
- 学生
Column Names
-
ID - The student's unique ID. This is primary Key
年龄 - The student's AGE.
分数 - The student's standardize test score.
示例数据表 -
ID AGE score
1 19 91
2 20 90
3 20 87
4 21 72
5 19 98
6 20 50
表格分数(从高到低)分别是(98,91,90,87,72,50), 例如,第四高的分数是 87。对于真正的查询,找到第 213 的最高分数。
解决方法
您可以使用以下具有限制和偏移量的查询 -
SELECT ID,AGE,SCORE
FROM STUDENT
ORDER BY SCORE DESC
LIMIT 212,1;
,
您想要一个带有 limit
的偏移量。由于偏移量 0
对应于 first 行,因此偏移量是一个偏移量。
我还使用具有显式 offset
的语法:
select s.*
from student s
order by score desc
limit 1 offset 212;
注意:这里假设 213th 指的是第 213 个学生——这意味着联系实际上并不存在。如果应以特殊方式处理并列分数,则需要在问题中说明。
例如,对于第 213 个最高 distinct 分数,逻辑可以返回多于一行,并且将是:
select s.*
from student s
where s.score = (select distinct s2.score
from student s2
order by s2.score desc
limit 1 offset 212
);
,
with cte as (select id,age,score,dense_rank over (order by score asc) as rank from student);
select id,score from cte where rank=213;
dense_rank() 是一个分析函数。在这种情况下,如果分数匹配,您可能会得到多个结果。如果你想要唯一的排名,试试 rank() 函数
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。