FE Study
FE Study メニュー

学習記録はこのブラウザー内に保存されます。

ホーム問題を解く
ログイン不要・無料で学習

ONE QUESTION, ONE STEP

SQLを学ぼう

選んで、確かめて、理解する。焦らず進めましょう。

科目Aデータベース標準
QUESTION 27

次のsales表に対してSQLを実行する。結果に含まれるshopはどれか。amountにNULLはない。 shop | amount A | 400 A | 700 B | 900 B | 50 C | 1200 SELECT shop, SUM(amount) FROM sales GROUP BY shop HAVING SUM(amount) >= 1000;

出典:本サイト オリジナル教材(2026年)

本サイトで独自に作成。IPAの試験問題からの転載ではありません。

公開日:

解答を一つ選んでください

選択肢を選んで、答え合わせをしましょう。

回答せずに正解・解説を確認する

正解:エ AとC

この表示だけでは、回答数や正答率は変わりません。

解説

GROUP BY shopで店舗ごとにまとめると、Aは400 + 700 = 1100、Bは900 + 50 = 950、Cは1200です。HAVINGは集約後のグループに条件を適用するので、合計が1000以上のAとCが残ります。

ア

Aだけでなく、合計1200のCも条件を満たします。

イ

Bの合計は950なので条件を満たしません。Aの合計1100は条件を満たします。

ウ

Bは合計が1000未満なので除外されます。

エ

Aは1100、Cは1200で、どちらも1000以上です。

関連知識

WHEREは集約前の行を絞り込み、HAVINGは集約後のグループを絞り込みます。例えばWHERE amount >= 1000を使うと、この例ではCの行しか集約対象にならず、別の処理になります。

間違えやすいポイント

各行のamountを1000と比較するのではなく、店舗ごとのSUM(amount)を比較します。

覚え方

WHEREは行、HAVINGは集計したグループ。

実務での意味

月間売上が基準額を超えた店舗や、一定件数以上の注文がある顧客を抽出するときに使います。

解説:本サイト編集部によるオリジナル文章

この問題の前後に、データベースの基礎知識ガイドで、 仕組み・比較・解き方を確認できます。 手順を確かめたい方は売上と入金を結合したら金額が倍に? 集計する粒度からSQLを直すの実習へ。 この問題の誤りを報告する(GitHub)。問題IDとURLを入力した下書きが開きます。自動投稿は行いません。 投稿は公開されるため、氏名・住所・メールアドレス・学習記録は記入しないでください。 詳しくはお問い合わせ窓口をご覧ください。