SQLのHAVING句|情報処理安全確保支援士 シラバス準拠予想問題2 問21

出典:データベース:小分類3|データ操作 分野:データベース / データ操作
SQLのHAVING句の説明として,最も適切なものはどれか。
  • ア:検索対象の表から,グループ化や集計を行う前の各行に対して抽出条件を指定する句である。
  • イ:検索結果から重複する行を取り除き,同じ値の組合せを一つだけ表示するために用いる指定である。
  • ウ:検索結果を,指定した列や式の値に基づいて昇順又は降順に並べ替えるために用いる句である。
  • エ:GROUP BYでグループ化した後の集計結果に対して,COUNTやSUMなどの集計関数を含む条件を指定する句である。
解説

HAVING句は、GROUP BY句でグループ化した後の集計結果に対して、抽出条件を指定するために用います。

例えば、部署ごとに社員数を集計した後で、「社員数が10人以上の部署だけを表示する」といった条件を指定する場合にHAVING句を使います。COUNT、SUM、AVGなどの集計関数を使った条件を指定できる点が重要です。

したがって、が適切です。

❌他選択肢が誤りの理由
ア:検索対象の表から,グループ化や集計を行う前の各行に対して抽出条件を指定する句である。
⇒WHERE句の説明です。WHERE句は、グループ化や集計を行う前の各行に対して条件を指定します。HAVING句は、GROUP BYでグループ化した後の集計結果に対して条件を指定する点が異なります。
イ:検索結果から重複する行を取り除き,同じ値の組合せを一つだけ表示するために用いる指定である。
⇒DISTINCTの説明です。DISTINCTは、検索結果から重複行を取り除くための指定です。HAVING句は重複を取り除くためではなく、グループ化後の集計結果を条件で絞り込むために用います。
ウ:検索結果を,指定した列や式の値に基づいて昇順又は降順に並べ替えるために用いる句である。
⇒ORDER BY句の説明です。ORDER BY句は、検索結果を指定した列や式に基づいて並べ替えるために使います。HAVING句は、並べ替えではなく、集計後のグループに対する抽出条件を指定する句です。
TSUNAGARU-ADVICE

まず押さえたいこと

HAVING句は、GROUP BYでグループ化した後の集計結果に対して条件を指定する句です。COUNT、SUM、AVGなどの集計関数を使って、グループ単位で抽出条件を指定するときに用います。

迷ったときの判断軸

グループ化や集計の前に各行を絞り込むものはWHERE句、重複行を取り除くものはDISTINCT、結果を昇順又は降順に並べ替えるものはORDER BYです。HAVING句は、集計後の結果を条件で絞り込むものと判断しましょう。

科目Bにつなげるために

科目Bでは、売上件数・合計金額・平均値などを集計したうえで、一定条件を満たすグループだけを抽出するSQLを読ませることがあります。WHERE句とHAVING句の違いは、条件を適用するタイミングが集計前か集計後かで整理しておきましょう。※DB関連試験向け。