我有一张学生表,以及他们在特定年份和特定课程中获得的成绩。我需要编写一个查询,该查询将为在多个课程中取得90分以上的学生返回StudentID,courseID和finalGrade。到目前为止,这就是我所拥有的。我可以输出一份学生名单,他们所修课的课程以及他们的最终成绩,但是我不知道如何将其范围缩小到如果ID在两门或两门以上课程中> 90的学生在此列表中出现多次的学生。
SELECT GRADES.StudentID, GRADES.CourseID, GRADES.Final, Count(*)
FROM GRADES
GROUP BY GRADES.StudentID, GRADES.CourseID, GRADES.Final, GRADES.Year
HAVING (((GRADES.Final)>90) AND ((Count(*))>1) AND ((GRADES.Year)=2006));
答案 0 :(得分:1)
听起来很简单。这是标准的SQL,不知道Access是否支持它:
SELECT studentid, courseid, final
FROM (SELECT studentid, courseid, final,
COUNT (*) FILTER (WHERE final > 90)
OVER (PARTITION BY studentid)
AS num_courses_over_90
FROM grades
WHERE year = 2006
) AS q
WHERE num_courses_over_90 > 1;
我不确定是否要为最终结果中列出的这些学生提供 all 个课程,还是只希望其得分超过90分的课程。如果是后者,请在末尾添加以下内容:
AND final > 90