問題
SQL の GROUP BY 句と HAVING 句の組合せに関する記述として正しいものはどれか。
選択肢
- 1HAVING はグループ化後の集計結果に対する条件指定、WHERE は集計前の行に対する条件指定
- 2HAVING は集計前、WHERE は集計後の絞り込みに使う
- 3GROUP BY 句を使わない場合でも HAVING は SUM などを返す
- 4HAVING 句では COUNT、SUM などの集約関数を使用できない
正解
1. HAVING はグループ化後の集計結果に対する条件指定、WHERE は集計前の行に対する条件指定
詳しい解説を見る解説を閉じる
解説
SQL の処理順序は FROM→WHERE→GROUP BY→HAVING→SELECT→ORDER BY。WHERE は GROUP BY 前の行レベル絞り込み、HAVING は GROUP BY 後のグループ単位(集約結果)に対する条件指定で、SUM、COUNT、AVG などの集約関数を含められる。たとえば「合計売上が 100 万以上の顧客」は HAVING SUM(amount) >= 1000000 で書く。WHERE で集約関数は使えない(GROUP BY 実行前のため)。インデックス設計と並んでパフォーマンス上重要な構文知識。
一問一答
全400問を繰り返し学習