基本情報

基本情報 平成25年度 春期 問28|テクノロジ系に関する問題

問題

基本情報 | 平成25年度 春期 | 分野:テクノロジ系

“中間テスト”表からクラスごと,教科ごとの平均点を求め,クラス名,教科名の昇順に表示するSQL文中のaに入れるべき字句はどれか。 中間テスト(クラス名,教科名,学生番号,名前,点数) 〔SQL文〕 SELECT クラス名, 教科名, AVG(点数) AS 平均点 FROM 中間テスト [ a ]

キーボード:1〜4で選択・Enterで次へ

タップするとすぐ答え合わせ

答え合わせ

正解は B
  • A
  • B
  • C
  • D

自信の3択

えらぶと、この端末に記録します(登録はいりません)

解説

答えは b です。

「クラスごと、教科ごとの平均点」を出したいので、まずクラスと教科でグループ分けします。これがSQLでは `GROUP BY クラス名, 教科名`。

次に「クラス名、教科名の昇順で表示」したいので `ORDER BY クラス名, 教科名`。

👉 覚え方:GROUP BY=仲間集めて平均/ORDER BY=並べ替え。問題文の「ごと」がGROUP BY、「昇順」がORDER BYのサイン。

ほかの選択肢:a は並べ替えキーに平均点を使っている/c はGROUP BYに学生番号まで入っていて細かすぎる/d はGROUP BYに平均点を入れていて、教科ごとにまとめていない。

なぜこれが正解か

正解は b。「クラスごと・教科ごとの平均点」を求めるには、グループ化キーがクラス名と教科名の組合せである必要がある。これにより`AVG(点数)`がクラス×教科の交差点で集計される。さらに「クラス名・教科名の昇順表示」は `ORDER BY クラス名, 教科名`(ASCはデフォルト省略可)。

各選択肢の解説

  • a:GROUP BYは正しいが、ORDER BYに `AVG(点数)` を入れてしまい昇順キーが教科名でなく平均点になる。
  • c:GROUP BYに学生番号まで含めると「学生ごと」になり、本来の集計単位(クラス×教科)にならない。
  • d:GROUP BY に教科名がなく,集計結果である平均点をグループ化のキーにしているため,教科ごとの平均点にならない(AVG の結果はグループ化した後に求まる値で,GROUP BY のキーにはできない)。

覚え方・ひっかけ注意

「GROUP BYのキー=集計の粒度」。問題文の「ごと」を全てGROUP BYに並べる。ORDER BY は表示順、GROUP BY は集計単位で役割が違う。集約関数(AVG/SUM/COUNT等)を使ったSELECTでは、GROUP BYに指定していない非集約列をSELECTに書くとエラーになる(標準SQL準拠)点も頻出ひっかけ。

理論的背景

SQLの集約クエリは関係代数の拡張演算「グループ化+集約」で表現できる: γ_クラス名,教科名;AVG(点数)(中間テスト)。実行時はオプティマイザが①ソートベースの集約(GROUP BYキーでソート後に連続走査)か②ハッシュベースの集約(ハッシュ表でグループ化)かを選択する。インデックスがGROUP BY列に張られていればソート省略でき高速。

句の論理的評価順序は SQL92 で FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY と規定され、これがエイリアス利用可否の根拠となる(SELECTで定義したエイリアスは ORDER BY では使えるが HAVING では使えない、など)。

実務での使われ方

GROUP BYは集計レポート・BI・ダッシュボードの基盤。OLAPではROLLUP / CUBE / GROUPING SETS拡張でクラス別小計・教科別小計・全体合計を一発で求められる(例: `GROUP BY ROLLUP(クラス名, 教科名)`)。ウィンドウ関数(`OVER(PARTITION BY ...)`)と組み合わせると行を保ったまま集計値を付加できる。

試験での位置づけ

FE午前のデータベース分野で必出。①GROUP BYと集約関数の組合せ、②HAVING句との違い(HAVING=集計後の絞込み、WHERE=集計前の絞込み)、③ORDER BY との混同、が三大論点。AP・DBスペシャリストではウィンドウ関数・CTE(WITH句)・再帰クエリまで範囲。

選択肢の発展補足

GROUP BYの粒度を誤ると「集計単位の粒度違い」というデータマートの典型バグになる。たとえば本問で学生番号を含めると「クラス×教科×学生」単位の平均(つまり個別点数そのもの)になり意味を失う。逆に「教科名のみ」でグループ化すれば全クラス横断の教科別平均となる。「何ごとに集計したいか」を主語で確認するのがバグ防止の鉄則。

この問題の根拠出典:IPA(情報処理推進機構)公式 基本情報技術者試験 平成25年度 春期 問28
訂正の記録この問題の訂正はありません(サイト全体の記録)
出典と作り方

出典:IPA(情報処理推進機構)公式 基本情報技術者試験 平成25年度 春期 問28/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビ独自の3段階の解説(初級・標準・上級)です。