修了試験 2015-12-20実施分 基本情報技術者試験 問28
“注文明細”表に対するSQLの構文として,正しいものはどれか。 注文明細(注文番号, 注文日, 数量)
正答2
解説
正解は2です。 GROUP BY句を使うと、指定した列の値ごとに行をまとめて集計できます。 このとき、SELECT句に書ける列は、GROUP BY句に指定した列か、AVGやSUMなどの集約関数に限られます。 また、集約関数の結果で絞り込む条件は、WHERE句ではなくHAVING句に書きます。 【選択肢別解説】 1:× 数量でグループ化しているのに、SELECT句にGROUP BY句に含まれない注文日を書いています。 1つのグループの中で注文日が1つに定まらないので、構文として正しくありません。 2:○ 注文日でグループ化し、SELECT句には注文日と集約関数AVG(数量)だけを書いています。 注文日ごとの数量の平均を求める正しい構文です。 3:× AVG(SUM(数量))のように、集約関数の中に集約関数を入れることは、標準SQLでは認められていません。 4:× WHERE句はグループ化の前に1行ずつ評価する条件なので、SUM(数量)のような集約関数は書けません。 合計で絞り込むなら、GROUP BY 注文日の後にHAVING SUM(数量) > 1000と書きます。 【ポイント】 SQLの各句は、FROM、WHERE、GROUP BY、HAVING、SELECTの順に処理されます。 「WHEREは行の条件、HAVINGはグループの条件」と区別します。まとめて解く
修了試験 2015-12-20実施分を通しで解く(80問)→