問題
SQL の GROUP BY 句に関する記述として、最も適切なものはどれか。
選択肢
- 1GROUP BY 句の後の HAVING 句はグループ化前の各行に対する条件指定である。
- 2SELECT 句に集約関数以外の列を書く場合、その列はGROUP BY 句にも含めなければならない(標準SQL)。
- 3WHERE 句は集約結果に対して条件を適用するが、HAVING 句はグループ化前の行に対して条件を適用する。
- 4GROUP BY 句で指定した列は、結果セットに含めることができない。
正解
2. SELECT 句に集約関数以外の列を書く場合、その列はGROUP BY 句にも含めなければならない(標準SQL)。
詳しい解説を見る解説を閉じる
解説
標準SQLでは SELECT 句に書く非集約列はすべて GROUP BY 句に列挙する必要がある。WHERE はグループ化前の行フィルタ、HAVING はグループ化後の集約結果フィルタであり、WHERE が集約結果に・HAVING がグループ化前の行に適用されるという記述は逆である。HAVING 句をグループ化前の各行に対する条件指定とする記述も同様に誤り。また、GROUP BY 句で指定した列は当然結果セットに含めることができる。
一問一答
全400問を繰り返し学習