SQL AVGはすべてのテーブルの同じ平均を与えます

Kage101:

私は現在、私はそれぞれの評価のために同じ平均値を取得しています、それぞれの評価の平均点を取得しようとしています。これは私のデータベースのエンティティ関係です

私はこの文を使用します。

SELECT cid, name, AVG(mark) FROM Assessment, Grade GROUP BY name, cid ORDER BY cid, name;`

私の結果は次のとおりです。 結果

離れて渡します:

あなたがやっていることは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

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=298625&siteId=1