Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL数据库查询返回最高分数_Mysql_Database - Fatal编程技术网

MYSQL数据库查询返回最高分数

MYSQL数据库查询返回最高分数,mysql,database,Mysql,Database,你好,我正在使用mysql为学校开发数据库。我在返回得分最高的学生的问题上遇到了麻烦。我尝试了不同的查询组合,但都不起作用。一些学生返回了所有成绩为100分的学生(注意,我的学生中只有一个在测试数据中成绩为100分),其他学生返回了第一个成绩为100分的学生。我怀疑我的数据库中有错误,但我无法解决它 DB: 你能看出我哪里出错了吗?你们也能告诉我合适的查询来检索得分最高的学生吗。谢谢如果我正确理解了你的意思,那么像这样的方法应该会奏效: select s.* from Students s

你好,我正在使用mysql为学校开发数据库。我在返回得分最高的学生的问题上遇到了麻烦。我尝试了不同的查询组合,但都不起作用。一些学生返回了所有成绩为100分的学生(注意,我的学生中只有一个在测试数据中成绩为100分),其他学生返回了第一个成绩为100分的学生。我怀疑我的数据库中有错误,但我无法解决它

DB:



你能看出我哪里出错了吗?你们也能告诉我合适的查询来检索得分最高的学生吗。谢谢

如果我正确理解了你的意思,那么像这样的方法应该会奏效:

select s.* from Students s
    join Grades g on a.StudentID = s.StudentID
where s.StudentID = (select max(Grade) from Grades);

如果我正确理解你的观点,那么类似的方法应该会奏效:

select s.* from Students s
    join Grades g on a.StudentID = s.StudentID
where s.StudentID = (select max(Grade) from Grades);

如果我正确理解你的观点,那么类似的方法应该会奏效:

select s.* from Students s
    join Grades g on a.StudentID = s.StudentID
where s.StudentID = (select max(Grade) from Grades);

如果我正确理解你的观点,那么类似的方法应该会奏效:

select s.* from Students s
    join Grades g on a.StudentID = s.StudentID
where s.StudentID = (select max(Grade) from Grades);

我想这就是你想要的,这会让你成为每门学科得分最高的学生,如果你想要一门特定的学科,你可以将
其中SubjectID=Subjects.SubjectID
改为
其中SubjectID=special\u subject\u id

SELECT Student.FirstName, Subjects.SubjectName, Grade.Grade, Subjects.SubjectID FROM 
Student INNER JOIN Grade ON Grade.StudentID=Student.StudentID 
INNER JOIN Subjects ON Grade.SubjectID=Subjects.SubjectID WHERE Grade.Grade=
(SELECT MAX(Grade) FROM Grade WHERE SubjectID=Subjects.SubjectID)
平均而言:

 SELECT Subjects.SubjectName, AVG(Grade.Grade), Grade.ClassID, Subjects.SubjectID 
 FROM Grade INNER JOIN Subjects ON Grade.SubjectID=Subjects.SubjectID
 GROUP BY Grade.ClassID, Grade.SubjectID;

这是一个查看最高分和平均分结果的工作。

我想这就是你想要的,这会让你在每个科目上获得最高分的学生,如果你想要一个特定科目,你可以将
其中SubjectID=科目。SubjectID
更改为
其中SubjectID=特定的科目id

SELECT Student.FirstName, Subjects.SubjectName, Grade.Grade, Subjects.SubjectID FROM 
Student INNER JOIN Grade ON Grade.StudentID=Student.StudentID 
INNER JOIN Subjects ON Grade.SubjectID=Subjects.SubjectID WHERE Grade.Grade=
(SELECT MAX(Grade) FROM Grade WHERE SubjectID=Subjects.SubjectID)
平均而言:

 SELECT Subjects.SubjectName, AVG(Grade.Grade), Grade.ClassID, Subjects.SubjectID 
 FROM Grade INNER JOIN Subjects ON Grade.SubjectID=Subjects.SubjectID
 GROUP BY Grade.ClassID, Grade.SubjectID;

这是一个查看最高分和平均分结果的工作。

我想这就是你想要的,这会让你在每个科目上获得最高分的学生,如果你想要一个特定科目,你可以将
其中SubjectID=科目。SubjectID
更改为
其中SubjectID=特定的科目id

SELECT Student.FirstName, Subjects.SubjectName, Grade.Grade, Subjects.SubjectID FROM 
Student INNER JOIN Grade ON Grade.StudentID=Student.StudentID 
INNER JOIN Subjects ON Grade.SubjectID=Subjects.SubjectID WHERE Grade.Grade=
(SELECT MAX(Grade) FROM Grade WHERE SubjectID=Subjects.SubjectID)
平均而言:

 SELECT Subjects.SubjectName, AVG(Grade.Grade), Grade.ClassID, Subjects.SubjectID 
 FROM Grade INNER JOIN Subjects ON Grade.SubjectID=Subjects.SubjectID
 GROUP BY Grade.ClassID, Grade.SubjectID;

这是一个查看最高分和平均分结果的工作。

我想这就是你想要的,这会让你在每个科目上获得最高分的学生,如果你想要一个特定科目,你可以将
其中SubjectID=科目。SubjectID
更改为
其中SubjectID=特定的科目id

SELECT Student.FirstName, Subjects.SubjectName, Grade.Grade, Subjects.SubjectID FROM 
Student INNER JOIN Grade ON Grade.StudentID=Student.StudentID 
INNER JOIN Subjects ON Grade.SubjectID=Subjects.SubjectID WHERE Grade.Grade=
(SELECT MAX(Grade) FROM Grade WHERE SubjectID=Subjects.SubjectID)
平均而言:

 SELECT Subjects.SubjectName, AVG(Grade.Grade), Grade.ClassID, Subjects.SubjectID 
 FROM Grade INNER JOIN Subjects ON Grade.SubjectID=Subjects.SubjectID
 GROUP BY Grade.ClassID, Grade.SubjectID;

下面是一个查看最高分数和平均分结果的方法。

您应该尝试这一方法作为正确答案:

SELECT 
A.FirstName, 
C.SubjectName, 
B.Grade, 
C.SubjectID 
FROM Student AS A
INNER JOIN Grade AS B ON B.StudentID=A.StudentID 
INNER JOIN Subjects AS C ON B.SubjectID=C.SubjectID 
WHERE B.Grade=(SELECT MAX(Grade) FROM Grade WHERE SubjectID=C.SubjectID)

你应该试试这一条,因为这也是正确的答案:

SELECT 
A.FirstName, 
C.SubjectName, 
B.Grade, 
C.SubjectID 
FROM Student AS A
INNER JOIN Grade AS B ON B.StudentID=A.StudentID 
INNER JOIN Subjects AS C ON B.SubjectID=C.SubjectID 
WHERE B.Grade=(SELECT MAX(Grade) FROM Grade WHERE SubjectID=C.SubjectID)

你应该试试这一条,因为这也是正确的答案:

SELECT 
A.FirstName, 
C.SubjectName, 
B.Grade, 
C.SubjectID 
FROM Student AS A
INNER JOIN Grade AS B ON B.StudentID=A.StudentID 
INNER JOIN Subjects AS C ON B.SubjectID=C.SubjectID 
WHERE B.Grade=(SELECT MAX(Grade) FROM Grade WHERE SubjectID=C.SubjectID)

你应该试试这一条,因为这也是正确的答案:

SELECT 
A.FirstName, 
C.SubjectName, 
B.Grade, 
C.SubjectID 
FROM Student AS A
INNER JOIN Grade AS B ON B.StudentID=A.StudentID 
INNER JOIN Subjects AS C ON B.SubjectID=C.SubjectID 
WHERE B.Grade=(SELECT MAX(Grade) FROM Grade WHERE SubjectID=C.SubjectID)



我可以看到一块我懒得读的文本:)尝试格式化和汇总,并显示您尝试创建的表结构和示例数据。但失败的问题在哪里?最后:每个科目得分最高的学生?特别是一个科目?总分最高的学生和一个特定班级的学生,正如我之前所说的,我尝试了很多查询,但并没有全部记录下来。我可以看到一块我懒得阅读的文本:)尝试格式化和总结,并展示您尝试的内容创建表结构和示例数据。但失败的问题在哪里?最后:每个科目得分最高的学生?特别是一个科目?总分最高的学生和一个特定班级的学生,正如我之前所说的,我尝试了很多查询,但并没有全部记录下来。我可以看到一块我懒得阅读的文本:)尝试格式化和总结,并展示您尝试的内容创建表结构和示例数据。但失败的问题在哪里?最后:每个科目得分最高的学生?特别是一个科目?总分最高的学生和一个特定班级的学生,正如我之前所说的,我尝试了很多查询,但并没有全部记录下来。我可以看到一块我懒得阅读的文本:)尝试格式化和总结,并展示您尝试的内容创建表结构和示例数据。但失败的问题在哪里?最后:每个科目得分最高的学生?对于一个特别的科目?总分最高的学生和一个特定班级的学生,正如我之前所说的,我尝试了这么多的查询,但并没有全部记下来。+1,我过去常做
WHERE Grade.Grade in(按科目从年级组中选择MAX(Grade))
,你的方法更好吗,更高效?是的,它更快,因为it用户
=
和否
分组。。。你可以自己尝试一些东西,感谢+1当我使用你的查询测试它时,我得到:迈克尔的5条记录,成绩:65.5 73.0 41.0 39.5 96.0 77.5,约翰的最后一条记录77.5,这显然是错误的…@user1800674你的插入在分数上是颠倒的,你在studentId处插入主语,反之亦然。我把它们倒回到小提琴里,这就是为什么我们的结果不同,注意你的成绩一直上升到18分,而你只有4个科目。谢谢。但是,如何检索平均等级分数?我今天早上没法计算+1,我过去常做
WHERE Grade.Grade IN(按主语从年级组中选择MAX(Grade))
,你的方法更好、更有效吗?是的,它更快,因为it用户
=
和否
按主语分组
。。。你可以自己尝试一些东西,感谢+1当我使用你的查询测试它时,我得到:迈克尔的5条记录,成绩:65.5 73.0 41.0 39.5 96.0 77.5,约翰的最后一条记录77.5,这显然是错误的…@user1800674你的插入在分数上是颠倒的,你在studentId处插入主语,反之亦然。我把它们倒回到小提琴里,这就是为什么我们的结果不同,注意你的成绩一直上升到18分,而你只有4个科目。谢谢。但是,如何检索平均等级分数?今天早上我没法算出+1,我过去常做
WHERE Grade.Grade IN(按主语从成绩组中选择MAX(Grade))
,你的方法更好、更有效吗