微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MYSQL:编写查询以查找学生 X 的考试成绩即 STUDENT 中第 213 名的 STUDENT.SCORE

如何解决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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?