我有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
我要选择每个班级中平均考试成绩最高的人,然后显示他们的姓名,班级名称和平均考试成绩。我该怎么办?
答案 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中运行良好,但请告诉我。