“社員”表と“人事異動”表から社員ごとの勤務成績の平均を求める適切な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 社員.社員コード, 社員.社員名 |
答え イ
【解説】
“AVG()”が平均値を求めるSQL句なので選択肢ウの“AVG(勤務成績)/COUNT(勤務成績)”は平均値を求める内容になっていない。また、選択肢エの“MAX(勤務成績)/COUNT(*)”は勤務成績に最大値(MAX)を使っているのでこれも平均値にはならない。
また、同じ社員の情報をまとめるための“GROUP BY”句で使用する属性は社員コード及び社員名である。
【キーワード】
・AVG
・GROUP BY