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