SQL-如何查询整个表和分组值

时间:2015-10-04 21:23:09

标签: sql ms-access

如果我有两个表,学生和成绩,例如,他们之间有关系,Students.ID = Grades.studentID,我如何查询成绩表中的成绩平均值并将其与个人进行比较学生平均成绩。

我已经坚持了很长一段时间,这是我到目前为止所做的:

SELECT Students.studentName 
FROM Students, Grades 
WHERE AVG(grade) < (SELECT AVG(grade) GROUP BY studentName);

   ^This part is to                 ^This part is to     
    find out the                     find out individual
    overall grade                    grade average
    average

1 个答案:

答案 0 :(得分:0)

很难在MS Access中的单个SELECT语句中执行此操作,但如果您创建一个仅提供成绩表数据的总体成绩平均值的已保存查询,则很容易。您可以将该查询命名为 qGradeAverage ,它看起来像这样:

SELECT AVG([grade]) AS OverallGradeAverage FROM Grades;

然后将其添加到您的最终查询中。

SELECT Students.StudentID, Students.StudentName, Avg(Grades.Grade) AS StudentGradeAverage, qGradeAverage.OverallGradeAverage
FROM qGradeAverage, Grades INNER JOIN Students ON Grades.StudentID = Students.StudentID
GROUP BY Students.StudentID, Students.StudentName, qGradeAverage.OverallGradeAverage;

注意:如果您使用的是SQL Server,则可以通过先获取平均值并将其保存为变量,在单个存储过程中执行此操作。