我有以下查询(如下),每次点击“运行”我都会收到此消息
'您的查询不包含指定表达式'StudentNumber'作为聚合函数的一部分。'
SELECT results.StudentNumber, student.FirstName, student.LastName,
results.Result1, results.Result2, results.Result3, results.Overall,
ROUND(((AVG(results.Result1) + AVG(results.Result2) +
AVG(results.Result3)) / 3), 0) AS AverageMark
FROM Results AS results
INNER JOIN Student AS student ON results.StudentNumber = student.StudentNumber
我不明白警告信息是什么问题,任何人都可以帮助解决问题,或者看看我做错了什么?
提前致谢
答案 0 :(得分:2)
如果您在任何列(此处为AVG()
)上使用聚合函数,则所有列也必须是聚合函数的一部分,或者在GROUP BY
子句中指定。
如果您想要每位学生的平均成绩,那么所有student
列都应该进入GROUP BY。但是,您无法在一个查询中获得详细结果和平均结果 - 您希望查询输出看起来如何?
工作查询应该是例如。
SELECT student.StudentNumber, student.FirstName, student.LastName,
ROUND(((AVG(results.Result1) + AVG(results.Result2) +
AVG(results.Result3)) / 3), 0) AS AverageMark
FROM Results AS results
INNER JOIN Student AS student ON results.StudentNumber = student.StudentNumber
GROUP BY student.StudentNumber, student.FirstName, student.LastName