SQL AVG 对所有表格给出相同的平均值
SQL AVG gives the same average for all Tables
我正在尝试获得每项评估的平均分,目前我获得的每项评估的平均分相同。 this is the entity relationship of my database。
我用这个语句:
SELECT cid, name, AVG(mark) FROM Assessment, Grade GROUP BY name, cid ORDER BY cid, name;`
我的结果是:
Result
如果我得到你的问题,你正在尝试获得每次评估(援助)的平均分数。
为此,您首先要加入表 Assessment 和 Grade。
然后按字段分组 (aid,cid,name) --> 仅 aid 就足够了,因为它是主键,但是如果您需要获取其他值,则需要将这些字段分组为嗯
select a.aid
,a.cid
,a.name
,avg(g.marks) avg_marks_by_assessment
from assessment a
join grade g
on a.aid=g.aid
group by a.aid
,a.cid
,a.name
您正在做的是表的(旧式)交叉连接,其中 returns 2 个表的所有可能组合。
而是使用 ON
子句中的条件正确连接表:
SELECT a.cid, a.name, AVG(g.mark)
FROM Assessment a INNER JOIN Grade g
ON g.aid = a.aid
GROUP BY a.cid, a.name
ORDER BY a.cid, a.name
我正在尝试获得每项评估的平均分,目前我获得的每项评估的平均分相同。 this is the entity relationship of my database。
我用这个语句:
SELECT cid, name, AVG(mark) FROM Assessment, Grade GROUP BY name, cid ORDER BY cid, name;`
我的结果是: Result
如果我得到你的问题,你正在尝试获得每次评估(援助)的平均分数。 为此,您首先要加入表 Assessment 和 Grade。
然后按字段分组 (aid,cid,name) --> 仅 aid 就足够了,因为它是主键,但是如果您需要获取其他值,则需要将这些字段分组为嗯
select a.aid
,a.cid
,a.name
,avg(g.marks) avg_marks_by_assessment
from assessment a
join grade g
on a.aid=g.aid
group by a.aid
,a.cid
,a.name
您正在做的是表的(旧式)交叉连接,其中 returns 2 个表的所有可能组合。
而是使用 ON
子句中的条件正确连接表:
SELECT a.cid, a.name, AVG(g.mark)
FROM Assessment a INNER JOIN Grade g
ON g.aid = a.aid
GROUP BY a.cid, a.name
ORDER BY a.cid, a.name