戦国IT - 情報処理技術者試験の過去問対策サイト
お知らせお問い合わせ料金プラン

データベーススペシャリスト 2009年 午前209


問題文

“社員”表と“人事異動”表から社員ごとの勤務成績の平均を求める適切なSQL文はどれか。ここで、求める項目は、社員コード、社員名、勤務成績(平均)の3項目とする
データベーススペシャリスト 2009年 午前2 問09の問題画像

選択肢

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 社員.社員コード、 社員.社員名

社員ごとの勤務成績の平均を求めるSQL文【午前2 解説】

要点まとめ

  • 結論:社員コードと社員名でグループ化し、勤務成績の平均を求めるSQL文が正解です。
  • 根拠:平均値は
    AVG()
    関数で計算し、集計対象の列でグループ化しなければ正しい集計結果が得られません。
  • 差がつくポイント:
    GROUP BY
    句の指定が適切か、集計関数の使い方、列名の誤りに注意することが重要です。

正解の理由

選択肢イは、社員コードと社員名でグループ化し、
AVG(勤務成績)
で勤務成績の平均を正しく計算しています。
また、
WHERE
句で社員コードを結合条件に指定し、社員ごとの勤務成績を正しく紐付けています。
これにより、社員ごとの勤務成績の平均値を正確に取得できるため正解です。

よくある誤解

  • GROUP BY
    に集計対象の列を指定すると、平均値が正しく計算されません。
  • 平均値を自分で計算しようとして
    AVG()
    COUNT()
    を組み合わせる必要はありません。

解法ステップ

  1. 「社員」表と「人事異動」表を社員コードで結合する。
  2. 社員ごとに勤務成績の平均を求めるため、社員コードと社員名でグループ化する。
  3. AVG()
    関数を使って勤務成績の平均を計算する。
  4. SELECT句で社員コード、社員名、勤務成績の平均を指定する。

選択肢別の誤答解説

  • ア:
    GROUP BY 勤務成績
    としており、勤務成績ごとにグループ化してしまうため、社員ごとの平均が求められません。
  • :正解。社員コードと社員名でグループ化し、
    AVG(勤務成績)
    で平均を正しく計算しています。
  • ウ:
    AVG(勤務成績)/COUNT(勤務成績)
    と誤った計算をしており、
    AVG()
    関数だけで平均は求められます。
  • エ:
    MAX(勤務成績)/COUNT(*)
    と平均ではなく最大値を使っており、正しい平均値が求められません。

補足コラム

SQLの集計関数には
SUM()
COUNT()
AVG()
MAX()
MIN()
があります。
平均値は
AVG()
で簡単に求められ、
GROUP BY
句で集計単位を指定します。
結合時は
JOIN
句を使うのが一般的ですが、問題文のようにカンマ区切りの結合も可能です。

FAQ

Q:
GROUP BY
句に複数の列を指定する理由は?
A: 集計単位を複数の列で指定することで、より細かい単位で集計結果を得られます。
Q:
AVG()
関数はどのように計算される?
A: 対象列の値の合計を件数で割った値を返します。自分で計算する必要はありません。

関連キーワード: SQL, 集計関数、GROUP BY, 平均値、テーブル結合、SELECT文
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

データベーススペシャリスト
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2025 情報処理技術者試験対策アプリ

このサイトについてプライバシーポリシー利用規約特商法表記開発者について