作业帮 > 综合 > 作业

一个SQL问题:求得一个班级中所有学生某个科目最近一次考试的成绩的最低分

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/03/29 21:09:27
一个SQL问题:求得一个班级中所有学生某个科目最近一次考试的成绩的最低分
从学生(Student),成绩(Result),科目(Subject)3个表中取.
学生表字段为:学号(StudentNo),姓名(StudentName);
成绩表字段为:学号(StudentNo),科目编号(SubjectId),成绩(StudentResult),考试时间(ExamDatetime)
科目表字段为:科目编号(SubjectId),科目名称(SubjectName)
------------------------------------------------------------------------------------
注:
某个科目一个学生可以考多次,但是考试时间不同

并不是所有学生都参加了全部的考试,即学生表中的学号在成绩表中不一定有
参加了考试的学生不一定有成绩,即成绩字段可能为null
没建表 你自己试试 先求出那个科目的ID,我去没有ID,那就假定
一个学生不可能在同一时间 考相同的科目
希望你是认真的研究此问题 而不是直接拷贝我的结果糊弄老师
--先设定那个科目
declare @SubjectName varchar(50)
set @SubjectName = 'XXXX'
select a.StudentNo,b.StudentResult
from StudentNo a left join --显示结果,没有参加考试的显示NULL
(select a.StudentNo,a.StudentResult from Result a inner join --关联最后一次考试的成绩
(select a.StudentNo,a.SubjectId,MAX(a.ExamDatetime) as MaxExamDatetime
from Result a --取出某个科目最后的考试时间
inner join Subject b on a.SubjectId = b.SubjectId
where SubjectName = @SubjectName
group by a.StudentNo,a.SubjectId) b
on a.StudentNo = b.StudentNo and a.SubjectId = b.SubjectId and a.ExamDatetime = b.MaxExamDatetime
) b
on a.StudentNo = b.StudentNo