問30 SQL

“社員”表と“人事異動”表から社員ごとの勤務成績の平均を求める適切なSQL文はどれか。ここで、求める項目は、社員コード、社員名、勤務成績(平均)の3項目とする。

SELECT 社員.社員コード, 社員名, AVG(勤務成績) AS "勤務成績(平均)"
	FROM 社員, 人事異動
	WHERE 社員.社員コード = 人事異動.社員コード
	GROUP BY 勤務成績

SELECT 社員.社員コード, 社員名, AVG(勤務成績) AS "勤務成績(平均)"
	FROM 社員, 人事異動
	WHERE 社員.社員コード = 人事異動.社員コード
	GROUP BY 社員.社員コード, 社員.社員名

SELECT 社員.社員コード, 社員名, AVG(勤務成績) / COUNT(勤務成績) AS "勤務成績(平均)"
	FROM 社員, 人事異動
	WHERE 社員.社員コード = 人事異動.社員コード
	GROUP BY 社員.社員コード, 社員.社員名

SELECT 社員.社員コード, 社員名, MAX(勤務成績) / COUNT(*) AS "勤務成績(平均)"
	FROM 社員, 人事異動
	WHERE 社員.社員コード = 人事異動.社員コード
	GROUP BY 社員.社員コード, 社員.社員名

問題ごとに異なっているのは1行目と4行目だけですから、そこに注目しましょう。
AVG関数は対象となる列に含まれる行の加算平均を求めてくれるので、COUNTで割る必要はありません。
また、そのまま勤務成績をAVGしてしまうと、すべての社員の平均が出てきてしまいますから、
まずはGROUP関数で各社員ごとにまとめてから演算する必要があります。
答えはイです。