2010-11-27 64 views
1

我有4个表是这样的:用相关数据显示每个组的最高结果?

  • “学生” 与字段ID,全名,性别,的ClassID( “类” 的 “ID”)....

  • “类” 与字段ID,类名

  • “受试者” 与字段ID,主旨名称

  • “点” 与字段ID,StudentID(的 “学生”, “ID”),SubjectID( “主题的ID”),ExamPoint

学生的平均考试点是通过加上所有的点来计算的,然后将这个结果除以科目数。如果约翰有数学8和英语4以及文学6,那么他的平均考试点是(8 + 4 + 6)/ 3 = 6。如果玛丽有数学10和英语5,那么她的平均考试点是(10 + 5)/2=7.5

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

回答

2

试试这些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中工作正常,但让我知道。