无法计算指定学生成绩平均值并在另一表中作为列展示
解决方法
首先,如果你只是想查询单个学生(比如ID为'1')的平均成绩,直接把AVG()函数作用在成绩字段上即可,不需要嵌套子查询:
SELECT AVG(Ocena) AS 平均成绩 FROM Ocene WHERE DjakID = '1'
如果要把所有学生的平均成绩作为一列关联到另一张学生表(假设学生表名为Djak,包含学生ID、姓名等信息),有两种常用写法:
方法1:子查询作为字段
这种写法适合需要保留学生表中所有记录(包括没有成绩的学生)的场景:
SELECT d.DjakID, d.Ime, -- 假设这是学生名字字段 (SELECT AVG(Ocena) FROM Ocene o WHERE o.DjakID = d.DjakID) AS 平均成绩 FROM Djak d
方法2:JOIN + GROUP BY
通过左连接关联两张表,再按学生ID分组计算平均:
SELECT d.DjakID, d.Ime, AVG(o.Ocena) AS 平均成绩 FROM Djak d LEFT JOIN Ocene o ON d.DjakID = o.DjakID GROUP BY d.DjakID, d.Ime
你之前尝试添加AVG没成功,大概率是因为把函数加在了嵌套子查询的内部却没做聚合,或者没有正确关联两张表的字段。上面两种写法可以根据你的实际表结构选择使用。
内容的提问来源于stack exchange,提问作者Dragan Delić
相关产品推荐
相关产品推荐

