過去問解きまくり研究所 ホーム

平成27年度 春期 午前Ⅱ 問7

データ操作

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

表の定義(原典の実線の下線は …、破線の下線は〔破線の下線〕で表した):

試験結果(学生番号,受験年月日,点数,クラス名)

答えと解説を見る

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

解説

年度はWHEREで絞り、クラス別の平均はHAVINGで条件にします。

SQLでは、WHEREで行を絞り込み、残った行をGROUP BYでまとめ、まとめた結果に対してHAVINGで条件をかける、という順に処理が進みます。この問いの表には3年分の記録があるので、まず受験年月日が2014年4月1日から2015年3月31日までの行だけをWHEREで残す必要があります。そのうえでクラス名ごとにまとめ、AVG(点数)が600以上のグループだけをHAVINGで残します。正解のSQLはこの順序どおりに書かれています。行に対する条件はWHERE、グループに対する条件はHAVINGと分けて考えると、条件を書く位置で迷わなくなります。

ほかの選択肢はなぜ違うのか

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

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)