平成24年度 春期 システム監査技術者試験 午前Ⅱ 問17
テクノロジ/データベース“商品”表に対して,次のSQL文を実行して得られる仕入先数は幾つか。 SELECT DISTINCT 仕入先コード FROM 商品 WHERE(販売単価-仕入単価)> (SELECT AVG(販売単価-仕入単価)FROM 商品) 商品 商品コード,商品名,販売単価,仕入先コード,仕入単価 A001,A,1,000,S1,800 B002,B,2,500,S2,2,300 C003,C,1,500,S2,1,400 D004,D,2,500,S1,1,600 E005,E,2,000,S1,1,600 F006,F,3,000,S3,2,800 G007,G,2,500,S3,2,200 H008,H,2,500,S4,2,000 I009,I,2,500,S5,2,000 J010,J,1,300,S6,1,000 (注:本サイトでは原問題の表を文字表記に変換しています)
出典:平成24年度 春期 システム監査技術者試験 午前Ⅱ 問17
- ア1
- イ2
- ウ3
- エ4
正解:ウ
解説
各行の(販売単価-仕入単価)は,A001:200,B002:200,C003:100,D004:900,E005:400,F006:200,G007:300,H008:500,I009:500,J010:300 であり,合計3,600,平均は360です。この平均を上回る行は,D004(900,仕入先S1),E005(400,仕入先S1),H008(500,仕入先S4),I009(500,仕入先S5)の4行で,SELECT DISTINCTにより重複する仕入先コードS1が1件にまとめられるため,得られる仕入先コードはS1,S4,S5の3件です。
選択肢ごとの解説
- ア誤り。平均を上回る行を一部しか数えていない場合などに生じる誤った結果です。
- イ誤り。DISTINCTによる重複排除の前後を取り違えるなどした場合に生じる誤った結果です。
- ウ正しい。平均(360)を上回る行はD004,E005,H008,I009の4行で,重複する仕入先コードS1をDISTINCTで1件にまとめると,得られる仕入先数は3(S1,S4,S5)です。
- エ誤り。DISTINCTを適用せず,該当する行数をそのまま仕入先数として数えた場合に生じる誤った結果です。