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

データベーススペシャリスト 2015年 午前207


問題文

過去3年分の記録を保存している“試験結果”表から、2014年度の平均点数が600点以上となったクラスのクラス名と平均点数の一覧を取得するSQL文はどれか。ここで、実線の下線は主キーを表す。
試験結果(学生番号受験年月日、点数、クラス名)

選択肢

SELECT クラス名、 AVG (点数) FROM 試験結果
    GROUP BY HAVING AVG() >= 600
SELECT クラス名、 AVG (点数) FROM 試験結果
    WHERE BETWEEN '2014-04-01' AND '2015-03-31'
    GROUP BY 57 HAVING AVG() >= 600
(正解)
SELECT クラス名、 AVG (点数) FROM 試験結果
    WHERE BETWEEN '2014-04-01' AND 2015-03-31'
    GROUP BY クラス名 HAVING 点数 >= 600
SELECT クラス名、 AVG(点数) FROM 試験結果
    WHERE 点数 >= 600
    GROUP BY クラス名
    HAVING (MAX(受験年月日) BETWEEN '2014-04-01' AND '2015-03-31')

過去3年分の記録から2014年度の平均点数600点以上のクラス名と平均点数を取得するSQL文【午前2 解説】

要点まとめ

  • 結論:2014年度の期間で絞り込み、クラスごとに平均点を計算し600点以上のクラスを抽出するSQL文はイです。
  • 根拠:WHERE句で受験年月日を2014年度に限定し、GROUP BYでクラス名ごとに集計、HAVING句で平均点600点以上を条件にしています。
  • 差がつくポイント:日付の範囲指定、GROUP BYの正しい記述、HAVING句で集計関数を使った条件指定が正確かどうかが重要です。

正解の理由

イのSQL文は、まず
WHERE
句で受験年月日を2014年度(2014年4月1日から2015年3月31日まで)に絞り込み、
GROUP BY クラス名
でクラスごとに集計しています。
その後、
HAVING AVG(点数) >= 600
で平均点が600点以上のクラスだけを抽出しているため、問題文の条件を正確に満たしています。

よくある誤解

  • WHERE句の書き方やBETWEENの使い方を誤り、日付範囲が正しく指定できていないことが多いです。
  • HAVING句で集計関数を使わずに単純な列名で条件を指定し、正しく絞り込めないケースがあります。

解法ステップ

  1. 2014年度の期間を
    受験年月日
    で絞り込むため、
    WHERE
    句に
    BETWEEN '2014-04-01' AND '2015-03-31'
    を指定する。
  2. クラスごとに平均点を計算するため、
    GROUP BY クラス名
    を使う。
  3. 平均点が600点以上のクラスを抽出するため、
    HAVING AVG(点数) >= 600
    を指定する。
  4. SELECT句で
    クラス名
    AVG(点数)
    を出力する。

選択肢別の誤答解説

  • ア:
    GROUP BY
    の後に対象の列がなく、
    HAVING AVG()
    の括弧内も空で文法エラー。
  • :正解。日付範囲指定、グループ化、平均点条件が正しく記述されている。
  • ウ:
    WHERE BETWEEN
    の書き方が誤り(BETWEENの前に列名がない)、
    HAVING 点数 >= 600
    は集計関数を使っていないため誤り。
  • エ:
    WHERE 点数 >= 600
    で点数で絞り込んでしまい、平均点600点以上のクラス抽出にはならない。
    HAVING
    句の条件も誤用。

補足コラム

SQLで集計結果に条件を付ける場合は
WHERE
句で行単位の絞り込み、
HAVING
句でグループ化後の集計結果に対する条件指定を行います。
また、日付の範囲指定は
BETWEEN
を使う際に対象の列名を必ず明記し、文字列の引用符や括弧の閉じ忘れに注意しましょう。

FAQ

Q: なぜ
HAVING
句で
AVG(点数) >= 600
と書くのですか?
A:
HAVING
句はグループ化後の集計結果に条件を付けるため、平均点のような集計関数を使った条件は
HAVING
で指定します。
Q:
WHERE
句で日付範囲を指定する理由は?
A:
WHERE
句は集計前の行を絞り込むため、対象年度のデータだけを抽出してから集計する必要があるからです。

関連キーワード: SQL, 集計関数、HAVING句、GROUP BY, 日付範囲指定、平均点、データ抽出
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

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

クイズ画面へ遷移する

すぐに利用可能!

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

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