IPA過去問ドリル

平成29年度 春期 システム監査技術者試験 午前Ⅱ 問17

テクノロジ/データベース

“商品”表と“商品別売上実績”表に対して,SQL文を実行して得られる売上平均金額はどれか。 〔SQL文〕 SELECT AVG(売上合計金額) AS 売上平均金額 FROM 商品 LEFT OUTER JOIN 商品別売上実績 ON 商品.商品コード = 商品別売上実績.商品コード WHERE 商品ランク = 'A' GROUP BY 商品ランク

平成29年度 春期 システム監査技術者試験 午前Ⅱ 問17の図

出典:平成29年度 春期 システム監査技術者試験 午前Ⅱ 問17

正解:イ

解説

設問のSQL文は,“商品”表と“商品別売上実績”表を商品コードで左外部結合し,商品ランクが“A”である商品(S001,S002,S003)について,売上合計金額の平均値を求めるものである。“商品別売上実績”表には,S001(50),S003(250)のデータはあるが,S002のデータは存在しない。左外部結合の結果,S002の売上合計金額はNULLとなり,AVG関数はNULLを除いて平均を計算するため,対象となるのはS001の50とS003の250の2件であり,平均は(50+250)÷2=150となる。

選択肢ごとの解説

  • 誤り。NULLを含めて3件で平均を計算した値(150よりも小さい誤った計算)に対応しており,AVG関数がNULLを除外して計算する点を考慮していません。
  • 正しい。商品ランクが“A”のS001,S002,S003のうち,売上実績があるのはS001(50)とS003(250)の2件であり,NULLとなるS002を除いた平均は(50+250)÷2=150となります。
  • 誤り。S001,S003に加えてS004など商品ランクが“A”でない商品の売上実績まで対象に含めて計算した値に対応しており,WHERE句による絞り込みを反映していません。
  • 誤り。売上合計金額の合計値をそのまま,又は誤った件数で除した値に対応しており,AVG関数による正しい平均の計算結果ではありません。
システム監査技術者の過去問を演習モードで解く