AUシステム監査技術者試験 午前Ⅱ
平成24年度春期 システム監査技術者 午前Ⅱ 問17
問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。
問題

選択肢
- ア1
- イ2
- ウ3
- エ4
解き方のヒントを見る
SQL抽出条件を読む一つの視点
SQLの抽出問題では、対象となる行の範囲を意識しながら、複数の条件がどのような関係で結果集合に影響するかを整理しましょう。境界や例外も同じ観点で確認します。
この問題で問われていること
確認する観点を、条件同士の組み合わせと対象行の関係に絞ります。各条件を単独で見るだけでなく、同時に成立する範囲や対象外となる範囲を区別して考えましょう。
視点
抽出条件を読むときは、条件ごとの意味を整理した後、それらが同じ行に対してどのように組み合わさるかを考えます。結果を判断する際は、対象範囲と境界の扱いを一貫して確認しましょう。
確認ポイント
- 抽出対象となる行の範囲を整理する
- 複数条件の組み合わせ方を確認する
- 境界値や条件に合わない行の扱いを見直す
正解と解説を見る
正解
ウ
解説
各商品の販売単価から仕入単価を引いた差額は、順に200円、200円、100円、900円、400円、200円、300円、500円、500円、300円です。合計は3、600円、10商品なので平均は3、600円÷10=360円です。360円を超えるのはD、E、H、Iで、仕入先コードはS1、S1、S4、S5です。DISTINCTで重複を除くとS1、S4、S5の3種類となります。
理由
差額の合計は3、600円で、10商品の平均差額は3、600円÷10商品=360円/商品です。WHERE句は差額がこの平均より大きい行を選ぶため、差額が900円のD、400円のE、500円のH、500円のIが該当します。
比較
該当行の仕入先コードはDがS1、EがS1、HがS4、IがS5です。S1は2行ありますが、SELECT DISTINCTにより1種類にまとめられるため、結果はS1、S4、S5の3種類です。
選択肢ア
これは不正解だよ。1種類になるには、平均差額360円/商品を超える全ての行が同じ仕入先である必要があります。しかし該当行にはS1、S4、S5の三つの仕入先コードが含まれるため、仕入先数を1とはできません。
選択肢イ
これは不正解だよ。差額が平均の360円/商品を超える行はD、E、H、Iであり、仕入先コードはS1、S1、S4、S5です。DISTINCT後はS1、S4、S5の三種類となるため、2という値とは一致しません。
選択肢ウ(正解)
これは正解だよ。差額の平均は3,600円÷10商品=360円/商品です。これを超えるD、E、H、Iの仕入先コードはS1、S1、S4、S5で、DISTINCTにより重複を除くとS1、S4、S5の3種類になります。
選択肢エ
これは不正解だよ。4種類とするには、四つの異なる仕入先コードが条件を満たす必要がありますが、該当コードはS1、S4、S5の三種類です。Gの差額は2,500円−2,200円=300円/商品で平均360円/商品以下なので、S3は加わりません。
学習のポイント
SQLの集計結果をWHERE条件に使い、抽出後にDISTINCTで件数を数える流れを確認する。
出典:独立行政法人 情報処理推進機構(IPA)平成24年度春期 システム監査技術者試験 午前Ⅱ 問17(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針