平成21年度 秋期 基本情報技術者試験 午前 問33
テクノロジ/データベースSQL の構文として,正しいものはどれか。
出典:平成21年度 秋期 基本情報技術者試験 午前 問33
- アSELECT 注文日, AVG(数量) FROM 注文明細
- イSELECT 注文日, AVG(数量) FROM 注文明細 GROUP BY 注文日
- ウSELECT 注文日, AVG(SUM(数量)) FROM 注文明細 GROUP BY 注文日
- エSELECT 注文日 FROM 注文明細 WHERE SUM(数量) > 1000 GROUP BY 注文日
正解:イ
解説
AVG関数のような集計関数を使い,注文日ごとの平均を求めるには,GROUP BY句で注文日ごとにグループ化する必要があります。GROUP BY句がないままAVGなどの集計関数と非集計列(注文日)を同時に選択することはできません。
選択肢ごとの解説
- ア誤り。GROUP BY句がないため,注文日ごとの集計にならず,構文としても不適切です。
- イ正しい。注文日でGROUP BYし,各グループごとにAVG(数量)を求める構文であり,正しいSQLです。
- ウ誤り。AVG(SUM(数量))のように集計関数を入れ子にする書き方は認められていません。
- エ誤り。WHERE句の中でSUM(数量)のような集計関数を条件に使うことはできず,集計結果に対する条件はHAVING句を使う必要があります。