DBデータベーススペシャリスト試験 午前Ⅱ

平成27年度春期 データベーススペシャリスト 午前Ⅱ 問7

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

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

選択肢

  1. ア
    SELECT クラス名,AVG(点数) FROM 試験結果 GROUP BY クラス名 HAVING AVG(点数) >= 600
  2. イ
    SELECT クラス名,AVG(点数) FROM 試験結果 WHERE 受験年月日 BETWEEN '2014-04-01' AND '2015-03-31' GROUP BY クラス名 HAVING AVG(点数) >= 600
  3. ウ
    SELECT クラス名,AVG(点数) FROM 試験結果 WHERE 受験年月日 BETWEEN '2014-04-01' AND '2015-03-31' GROUP BY クラス名 HAVING 点数 >= 600
  4. エ
    SELECT クラス名,AVG(点数) FROM 試験結果 WHERE 点数 >= 600 GROUP BY クラス名 HAVING (MAX(受験年月日) BETWEEN '2014-04-01' AND '2015-03-31')
解き方のヒントを見る

抽出条件と結果の対応を読む視点

SQLの抽出条件を読むときは、条件がどの行や列の値に関係し、複数の条件が結果集合にどう影響するかを整理し、提示された結果との対応を丁寧に照合しましょう。特に条件の適用対象と組合せ方を分けて確認することが重要です。

この問題で問われていること

一つの観点として、各条件がどのデータ範囲に作用するかを確認し、条件同士を個別に読んだ場合と組み合わせて読んだ場合の違いに注目してください。結果の各行をその観点で見比べます。

視点

抽出条件と結果を対応づける際は、条件の対象、条件間の関係、結果に現れるデータの特徴を分けて整理すると、読み違いを抑えやすくなります。

確認ポイント

  • 各条件が参照している列や値の範囲を確認する
  • 条件同士を組み合わせたときの関係を整理する
  • 結果に含まれる行の特徴を条件ごとに照合する
正解と解説を見る

正解

イ

解説

2014年度に該当する受験年月日の行だけを先に対象とし、その後クラス名ごとに点数の平均を計算する。平均が600点以上という集計結果への条件はHAVING句で指定するため、該当するSQLはイです。

理由

2014年度は2014年4月1日から2015年3月31日までなので、受験年月日をWHERE句でこの範囲に限定する。その対象行をクラス名でGROUP BYし、AVG(点数)を計算した後、HAVING AVG(点数) >= 600でクラス単位の平均点を絞り込む。

比較

WHERE句は個々の試験結果の行を集計前に選別し、HAVING句はGROUP BY後に得られた集計結果を選別する。したがって、平均点数への条件を点数列そのものに適用したり、最大受験年月日だけで年度を判定したりする構文は目的と一致しない。

選択肢ア

これは不正解だよ。クラス名ごとの平均を計算し、平均が600点以上という条件をHAVING句で指定している点は適切だが、2014年度の受験年月日に限定していない。過去3年分の全記録を平均するため、年度別の要求を満たさない。

選択肢イ(正解)

これは正解だよ。WHERE句で受験年月日を2014年4月1日から2015年3月31日までに限定し、その対象をクラス名ごとにGROUP BYしてAVG(点数)を求めている。さらにHAVING句でクラスごとの平均点が600以上の結果だけを取得している。

選択肢ウ

これは不正解だよ。年度の受験年月日をWHERE句で限定し、クラス名ごとに集計する部分は適切だが、HAVING句の条件が点数 >= 600になっている。求める条件は個々の点数ではなく、クラス単位で計算したAVG(点数)である。

選択肢エ

これは不正解だよ。WHERE句で点数が600以上の行だけを先に残すため、600未満の点数を含めた本来の平均を計算できない。また、HAVING句で最大受験年月日だけを年度範囲と比較しており、全記録が年度内かを正しく限定していない。

学習のポイント

WHEREとHAVINGの役割、および年度範囲を限定してから集計するSQLの順序を理解する。

出典:独立行政法人 情報処理推進機構(IPA)平成27年度春期 データベーススペシャリスト試験 午前Ⅱ 問7(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針