問題 No.2475
リレーショナルデータベースにおいて、SQLによる検索結果の集計結果に対してグループごとの絞り込み条件を指定する際に用いられる句はどれか。
【正解の解説】
HAVING句
居酒屋の会計で「まず全員のビール代を個別に計算(WHERE)し、次にテーブルごとに人数で割って合計を出し(GROUP BY)、最後に『合計金額が1万円を超えたテーブルだけ値引きする』と条件をつけるのがHAVINGの役割です。集計という作業が終わったあとにフィルタをかける点がポイントです。
スポンサーリンク
【その他の選択肢の解説】
WHERE句
初学者が最も間違いやすいポイントですが、WHERE句は集計する前の生データに対して働きかけます。「平均点が50点以上のクラス」といった集計結果後の条件はWHERE句では処理できず、必ずHAVING句を使う必要があるため、実行順序の罠に注意しましょう。
ORDER句
データを見やすく整理整頓するための並べ替え専用であり、条件に合致するデータを選別する絞り込みの機能は持っていません。テストの点数順に並べることはできますが、「赤点の人を除外する」といった条件指定はできないため、役割の混同に気をつけましょう。
GROUP句
「部署ごとに集計する」や「性別ごとに人数を数える」というように、データを束ねる役割を持ちます。単語が不完全であり正式にはGROUP BY句と呼ばれますが、これ単体では絞り込みを行えず、あくまで集計の土台を作るためのものと理解してください。