データベーススペシャリスト 2009年 春期 問9
9 / 25
“社員”表と”人事異動”表から社員ごとの勤務成績の平均を求める適切な SQL 文 はどれか。ここで、求める項目は、社員コード,社員名、勤務成績(平均)の3項目 とする。 社員 社員コード 社員名 性別 生年月日 入社年月日 太田由美 女 1970-03-10 1990-04-01 $3781 佐藤義男 男 1943-11-20 1975-06-11 太田由美 女 1978-10-13 1999-04-01 人事異動 配属年月日 社員コード 亀属部P 日勤務内容 総務部 1990-04-01 広報(社内報) 69.0 営業部 1998-07-01 顣客管理 72.0 $3781 資材部 1975-06-11 仕入在庫管理 70.0 S3781 経理部 資金計画 81.0 1984-07-01 95.0 企画部 1993-07-01 会社組織、分革 $3781 秘習室 受付 70.0 1999-04-01 SELECH 社員・社員コード、社員名、AVG(勤務成績)AS "勤務成績(平均)” FROM 社員、人事異動 社員。社員コード=人事異動。社員コード WHERE 勤務成績 GROUP BY SELECT 社員。社員コード、社員名、AVG(勤務成績) AS "勤務成績(平均)” FROM 社員,人事異動 WEERE 社員。社員コード=人事異動.社員コード GROUP BY 社員。社員コード、社員。社員名

正解と解説
表示する
SELECT 社員.社員コード,社員名,AVG(勤務成績) AS "勤務成績(平均)" FROM 社員,人事異動 WHERE 社員.社員コード = 人事異動.社員コード GROUP BY 社員.社員コード,社員.社員名
社員ごとに勤務成績の平均を求めるには、社員コードで結合した上でGROUP BYで社員ごとにグループ化し、AVG(勤務成績)で平均を取ります。SELECTの集計しない列(社員コード・社員名)はGROUP BYに含める必要があり、その形になっている選択肢が正解です。