哪些学生在 2006 年有超过 90 分以上的课程?

Which students have a final of over 90 in more than one course in 2006?

我有 table 个学生以及他们在某年某门课程中获得的成绩。我需要编写一个查询,为在多门课程中取得 90 分以上的学生查询 return studentID、courseID 和 finalGrade。这是我到目前为止所拥有的。我可以输出一份学生名单、他们所修的课程和他们的期末成绩,但我不知道如何将名单缩小到如果他们在两门或更多门课程中取得 > 90 分,其 ID 将在此列表中多次出现的学生。

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));

听起来很简单。这是标准的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;

我不确定您是希望这些学生的所有门课程列在最终结果中,还是只列出他们得分超过90分的课程。如果是后者,请添加最后如下:

AND final > 90