平均の求め方に関する注意:

集計関数を利用するときには、その計算結果を誤って使用することの内容に注意が必要。

集計関数AVGについて以下の問題について考えて見よう。

問題: チーム打率 を求めるには?

打率: 大雑把に説明すると、バッターとピッチャーが勝負した結果、バッターがヒット(〜ホームラン)を打つ率。 ヒット本数÷勝負の回数 (エラー、四死球は除く)
チーム打率: 野球チームの、チームとしての平均的な打率。

考え方:

その1 各バッターの 打率 を求める。 次に 求めた打率の平均 を求める
その2 チーム全体の ヒット数 と 打数 を合計で求める。 次に、 チームヒット数/チーム打数 でチーム打率を求める。
その3 チーム全体の 平均ヒット数 と 平均打数 を求める。 次に、 平均ヒット数/平均打数 でチーム打率 を求める。

上記で、考え方 その1 は 誤り であるので注意すること。


説明:

チームのメンバーが以下の4名であるとする。

Aがヒットの数、Bが打数とする。

(野球でイメージしにくい場合は、サッカーの選手の成績として
A→ゴール回数、 B→ シュート回数
で考えてみる)

名前 A B A/B
選手1 3 10 0.3
選手2 6 20 0.3
選手3 2 4 0.5
選手4 1 2 0.5
--------------
SUM 12 36
AVG 3 9 0.4

A/Bの平均=(0.3+0.3+0.5+0.5)/4=0.4

テーブル全体でのA/Bを計算=
SUM(A)/SUM(B)=12/36=0.333

Aの平均/Bの平均の計算=
AVG(A)/AVG(B)=3/9=0.333(SUM(A) / COUNT(*)) / (SUM(B) / COUNT(*))
ゆえに、
AVG(A)/AVG(B)=SUM(A) / SUM(B)

(まとめ)

上記の例においては、出場回数などが各選手ごとに異なるので、そこを考慮せずに直接、各選手の平均値の平均を取ることでチームの平均とするのは間違っている。