問題
問33 SQLの構文として,正しいものはどれか。
ア SELECT 注文日, AVG(数量)
FROM 注文明細
イ SELECT 注文日, AVG(数量)
FROM 注文明細
GROUP BY 注文日
ウ SELECT 注文日, AVG(SUM(数量))
FROM 注文明細
GROUP BY 注文日
エ SELECT 注文日
FROM 注文明細
WHERE SUM(数量) > 1000
GROUP BY 注文日
解説と解答
それぞれの選択肢にあるSQL文を検証してみましょう。選択肢アのSQL文は、集合関数とともに注文日が指定されているのにGROUP BY句がありません。そのため誤りです。選択肢イのようにGROUP BY句を指定するか、「SELECT AVG(数量) FROM 注文明細」としなければいけません。
選択肢イのSQL文は、正しいSQL文です。注文明細表から注文日ごとの数量の平均を問い合わせしています。
選択肢ウのSQL文のように、集合関数の中に集合関数を使うことはできません。
選択肢エのSQL文のように、集合関数をWHERE句で使うことはできません。条件式を書くとすれば、HAVING句になります。
以上より正解は,選択肢イです。
アイティ・アシスト インストラクタ