SAシステムアーキテクト試験 午前Ⅱ
令和3年度春期 システムアーキテクト 午前Ⅱ 問24
問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。
問題

選択肢
- ア400
- イ500
- ウ600
- エ700
解き方のヒントを見る
抽出条件と結果を照合する視点
SQLの抽出結果を考えるときは、条件が各行のどの値を対象に判定されるかを整理し、表示対象と除外対象の境界を落ち着いて確認します。条件と対象の対応を先に確認すると、結果の読み違いを避けやすくなります。
この問題で問われていること
着目点は、条件の各部分を一度に結論へ結び付けず、対象となる列・行・条件同士の関係を分けて整理したうえで、結果に含まれる範囲を確認することです。その際、値の比較対象と条件の組合せが同じ行に適用されるかを意識します。
視点
抽出条件と結果の対応を考える際は、各条件がどの対象にかかるか、条件同士をどのようにまとめて読むか、結果として確認する範囲はどこかを順に整理します。具体的な結論ではなく、条件と対象の対応関係に焦点を置きましょう。
確認ポイント
- 条件ごとに判定対象となる列や行を区別して書き出す
- 複数の条件を読む単位と、各行への適用範囲を整理する
- 結果に含まれる対象を、条件との対応関係だけで再確認する
正解と解説を見る
正解
ア
解説
商品コードごとに出荷数を合計すると、条件を満たす商品はS001とS003です。それぞれの月末在庫数を加えるため、100個+300個=400個となります。
理由
S001の出荷実績は50件+100件=150件、S003は150件+150件=300件、S005は100件+250件=350件です。S002とS004は出荷行がなく、SUMはNULLになります。したがって、出荷実績数が300以下となるS001とS003が対象です。
比較
対象商品の月末在庫数は、S001が100個、S003が300個です。よってSQLの結果は、100個+300個=400個です。S005は個々の出荷数が300以下でも、商品単位の合計が350件なので対象外になります。
選択肢ア(正解)
これは正解だよ。商品コードごとの出荷実績はS001が150件、S003が300件で条件を満たします。対応する月末在庫数は100個と300個なので、合計は100個+300個=400個です。
選択肢イ
これは不正解だよ。500個は、例えばS003の在庫300個とS005の在庫200個を加えた値ですが、S005の出荷実績は100件+250件=350件です。300以下という条件に合わないため、S005は加算できません。
選択肢ウ
これは不正解だよ。600個はS001、S003、S005の在庫数を合計した値ですが、S005の出荷実績は350件で条件外です。各出荷行が300件以下でも、GROUP BY後の合計値が判定対象になります。
選択肢エ
これは不正解だよ。700個はS002の250個とS004の450個を合計した値に相当しますが、両商品には出荷行がなく、出荷実績数はNULLです。NULLは300以下という条件を満たさないため、加算されません。
学習のポイント
GROUP BY後の集計値にWHERE条件を適用する順序と、NULLの扱いを学習します。
出典:独立行政法人 情報処理推進機構(IPA)令和3年度春期 システムアーキテクト試験 午前Ⅱ 問24(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針