過去問解きまくり研究所 ホーム

平成21年度 春期 午前Ⅱ 問9

データ操作

集約関数に関する問題

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

社員

社員コード社員名性別生年月日入社年月日
O1553太田 由美女1970-03-101990-04-01
S3781佐藤 義男男1943-11-201975-06-11
O8665太田 由美女1978-10-131999-04-01

人事異動

社員コード配属部門配属年月日担当勤務内容勤務成績
O1553総務部1990-04-01広報(社内報)69.0
O1553営業部1998-07-01顧客管理72.0
S3781資材部1975-06-11仕入在庫管理70.0
S3781経理部1984-07-01資金計画81.0
S3781企画部1993-07-01会社組織,分掌95.0
O8665秘書室1999-04-01受付70.0
答えと解説を見る

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

解説

社員コードと社員名でグループ化し、AVG で勤務成績の平均を出します。

社員ごとの平均を求めるには、社員表と人事異動表を社員コードで結合し、社員単位でグループ化してから AVG を適用します。GROUP BY に社員コードと社員名を並べると、SELECT 句に書いた社員コードと社員名がどちらもグループ化の列になり、正しく出力できます。O1553 は (69.0+72.0)÷2=70.5、S3781 は (70.0+81.0+95.0)÷3=82.0、O8665 は 70.0 となります。社員名だけでは同姓同名の太田由美さん 2 人を区別できないので、社員コードでまとめることが欠かせません。集約関数の問は、GROUP BY の列が求めたい単位と一致しているか、関数の値をさらに割っていないかの二点で見分けます。

ほかの選択肢はなぜ違うのか

この問題の用語

出典:平成21年度 春期 データベーススペシャリスト試験 午前Ⅱ 問9

同じ用語が出る問題

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)