平成21年度 春期 午前Ⅱ 問9
データ操作
集約関数に関する問題
“社員”表と“人事異動”表から社員ごとの勤務成績の平均を求める適切な SQL 文はどれか。ここで,求める項目は,社員コード,社員名,勤務成績(平均)の 3 項目とする。
社員
| 社員コード | 社員名 | 性別 | 生年月日 | 入社年月日 |
|---|---|---|---|---|
| O1553 | 太田 由美 | 女 | 1970-03-10 | 1990-04-01 |
| S3781 | 佐藤 義男 | 男 | 1943-11-20 | 1975-06-11 |
| O8665 | 太田 由美 | 女 | 1978-10-13 | 1999-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 勤務成績
- イSELECT 社員.社員コード,社員名,AVG(勤務成績) AS "勤務成績(平均)" FROM 社員,人事異動 WHERE 社員.社員コード = 人事異動.社員コード GROUP BY 社員.社員コード,社員.社員名
- ウSELECT 社員.社員コード,社員名,AVG(勤務成績)/COUNT(勤務成績) AS "勤務成績(平均)" FROM 社員,人事異動 WHERE 社員.社員コード = 人事異動.社員コード GROUP BY 社員.社員コード,社員.社員名
- エSELECT 社員.社員コード,社員名,MAX(勤務成績)/COUNT(*) AS "勤務成績(平均)" FROM 社員,人事異動 WHERE 社員.社員コード = 人事異動.社員コード GROUP BY 社員.社員コード,社員.社員名
答えと解説を見る
✓ これが正解イ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 の列が求めたい単位と一致しているか、関数の値をさらに割っていないかの二点で見分けます。
ほかの選択肢はなぜ違うのか
- アSELECT 社員.社員コード,社員名,…:勤務成績の値でグループ化しているので、同じ点数の行がひとまとめになり、社員ごとの平均にはなりません。例えば 70.0 の行は S3781 と O8665 のものが一つのグループに入り、SELECT 句の社員コードもグループごとに一つに定まりません。
- ウSELECT 社員.社員コード,社員名,…:AVG はすでに合計を件数で割った値なので、それをさらに COUNT で割ると件数で二重に割ることになります。O1553 なら 70.5÷2=35.25 となり、平均の半分の値が出てしまいます。
- エSELECT 社員.社員コード,社員名,…:MAX は最高点を返す関数で、それを件数で割っても平均にはなりません。O1553 なら 72.0÷2=36.0 となり、求める 70.5 とは一致しません。平均は合計を件数で割って求めます。
この問題の用語
- 部門組織の中で、仕事の種類や担当ごとに分けられたまとまりです。専門ごとに分ける分け方と、製品や地域ごとに分ける分け方があります。
- 企画何のために作るのかを決め、進める形をまとめる最初の段階です。ここで業務の進め方そのものを見直すと、大きな改善につながります。
- 組織目的を果たすために、人が役割を分けて集まったまとまりのことです。分け方には機能別、事業部制、マトリックスなどの形があります。
出典:平成21年度 春期 データベーススペシャリスト試験 午前Ⅱ 問9
同じ用語が出る問題
- 令和6年度 秋期 午前Ⅱ 問6:クラス図に関する問題(組織)
- 令和4年度 秋期 午前Ⅱ 問23:アクセス透過性の説明(組織)
- 平成26年度 春期 午前Ⅱ 問18:データマイニングに関する説明(部門)
- 平成25年度 春期 午前Ⅱ 問5:集約関数に関する問題(部門)
- 平成24年度 春期 午前Ⅱ 問11:副問合せに関する問題(部門)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)