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

問7

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

 試験結果(学生番号受験年月日,点数,クラス名)
  • 07a.gif/image-size:404×34
  • 07i.gif/image-size:404×54
  • 07u.gif/image-size:404×52
  • 07e.gif/image-size:404×90

分類

テクノロジ系 » データベース » データ操作

正解

解説

  • BETWEEN句による受験年月日の絞り込みが行われておらず、全期間を対象に集計を行っているため誤りです。
  • 正しい。このSQL文は以下の手順で処理されていきます。
    1. WHERE句とBETWEEN句の組合せで受験年月日が2014年度の行だけに絞り込む。
    2. 「GROUP BY クラス名」でグループ化し、2014年の試験結果がクラスごとにグループ化された状態にする。
    3. 平均点数が600点以上のグループを抽出する。グループごとの点数の平均はAVG(点数)で得られるため「HAVING AVG(点数) >= 600」で、この条件に合致するグループのみを抽出する。
    4. 「SELECT クラス名,AVG(点数)」で、クラス名と点数の平均値を表示する。
  • HAVING句にはグループ化に指定されている列または集計関数しか指定できません。このSQL文はグループ化されていない"点数"列を指定しているため構文エラーになります。
  • 「WHERE 点数 >= 600」によって最初から600点以上の行だけに絞り込んでしまっているため正しい平均点数が得られません。
© 2016-2024 データベーススペシャリストドットコム All Rights Reserved.

Pagetop