令和4年度 秋期 応用情報技術者試験 午前 問28
“商品” 表に対して,次の 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 文の実行結果として取得される仕入先コードのユニークな件数を導出する問題です。
WHERE句による絞り込み
SQL文のWHERE句に指定された条件を満たすレコードを「商品」表から抽出します。DISTINCTによる重複排除
SELECT句にDISTINCTキーワードが指定されている場合、抽出されたレコード群の中から指定された列(ここでは仕入先コード)の重複が排除されます。結果のカウント
条件を満たし、かつ重複を除外したあとの仕入先コードの数を数えます。本問のデータと条件に合致する仕入先コードは3種類となるため、得られるコード数は「3」です。
各選択肢の解説
- ア (1): 抽出条件や重複排除の解釈を誤り、1件のみと判断した場合の誤答です。
- イ (2): 条件を満たすレコードの一部を見落としたり、誤った条件で抽出してしまった場合の誤答です。
- ウ (3): 正解です。条件を満たし、かつ重複を排除した仕入先コードの正確な数です。
- エ (4):
DISTINCTによる重複排除を忘れ、抽出されたレコード行数をそのまま数えてしまった場合などに陥りやすい誤りです。