問題
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 はグループ化後の集約結果フィルタ(3は逆)。1も誤り(HAVINGはグループ化後)。4は誤り(GROUP BYした列は当然 SELECT 可能)。
一問一答
全400問を繰り返し学習