令和4年度 秋期 応用情報技術者試験 午前 問28

“商品” 表に対して,次の SQL 文を実行して得られる仕入先コード数は幾つか。

〔SQL文〕
図の説明テキスト

〔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
解答・解説

正解: ウ. 3

本問は、与えられた SQL 文の実行結果として取得される仕入先コードのユニークな件数を導出する問題です。

  1. WHERE句による絞り込み
    SQL文の WHERE 句に指定された条件を満たすレコードを「商品」表から抽出します。

  2. DISTINCTによる重複排除
    SELECT 句に DISTINCT キーワードが指定されている場合、抽出されたレコード群の中から指定された列(ここでは仕入先コード)の重複が排除されます。

  3. 結果のカウント
    条件を満たし、かつ重複を除外したあとの仕入先コードの数を数えます。本問のデータと条件に合致する仕入先コードは3種類となるため、得られるコード数は「3」です。

各選択肢の解説

  • ア (1): 抽出条件や重複排除の解釈を誤り、1件のみと判断した場合の誤答です。
  • イ (2): 条件を満たすレコードの一部を見落としたり、誤った条件で抽出してしまった場合の誤答です。
  • ウ (3): 正解です。条件を満たし、かつ重複を排除した仕入先コードの正確な数です。
  • エ (4): DISTINCT による重複排除を忘れ、抽出されたレコード行数をそのまま数えてしまった場合などに陥りやすい誤りです。

Spineチーム