使用相关性数据显示每个组的最高结果?

时间:2010-11-27 16:47:00

标签: sql database ms-access

我有4张这样的表:

  • “学生”,包含字段ID,FullName,Gender,ClassID(“Class”的“ID”)....

  • 带有字段ID,ClassName

  • 的“类”
  • “主题”,包含字段ID,SubjectName

  • “积分”包含字段ID,StudentID(“学生”的“ID”),SubjectID(“主题ID”),ExamPoint

通过添加所有点来计算学生的平均考试点,然后将该结果除以科目数。如果John有数学8和英语4以及文献6,那么他的平均考试点是(8 + 4 + 6)/ 3 = 6。如果Mary有数学10和英语5,那么她的平均考试成绩是(10 + 5)/2=7.5

我要选择每个班级中平均考试成绩最高的人,然后显示他们的姓名,班级名称和平均考试成绩。我该怎么办?

1 个答案:

答案 0 :(得分:2)

尝试这两个查询。第一个是为您提供每个学生的平均考试成绩的视图。

V_AveragesPoints

SELECT  s.FullName, c.ClassName, AVG(p.ExamPoint) AS AvgPoints
FROM    Points p
INNER   JOIN Student s
        ON p.StudentID = s.ID
INNER   JOIN Class c
        ON s.ClassID = c.ID
GROUP   BY s.FullName, c.ClassName

第二部分为您提供每个班级最高平均分数的视图。

SELECT  FullName, ClassName, AvgPoints
FROM    V_AveragePoints ap1
WHERE   AvgPoints = (SELECT MAX(AvgPoints) FROM V_AveragePoints WHERE ClassName = ap1.ClassName)

我使用标准T-SQL编写了这些内容,因此它们应该在MS Access中工作,尽管我尚未使用MS Access验证它们。它们在SQL Server中运行良好,但请告诉我。