応用情報技術者試験 令和4年度 秋期 午前 問28
"商品"表に対して、次の SQL 文を実行して得られる仕入先コード数は幾つか。 〔SQL 文〕 SELECT DISTINCT 仕入先コード FROM 商品 WHERE (販売単価 - 仕入単価) > (SELECT AVG (販売単価 - 仕入単価) FROM 商品)

選択肢を押すと答え合わせができます。
正解と解説を見る
【正解】ウ
まず、各商品の「販売単価-仕入単価」を求めます。AからJまで順に、200、200、100、900、400、200、300、500、500、300円です。合計は3,600円、商品数は10なので、平均利益額は3,600÷10=360円です。
WHERE句は平均より大きい商品を抽出するため、利益額が360円を超えるD、E、H、Iが該当します。それぞれの仕入先コードはS1、S1、S4、S5です。SELECT DISTINCTによって重複するS1が一つにまとめられ、得られるコードはS1、S4、S5の3種類です。したがって、正解はウです。
アの1は誤りです。S1だけでなく、S4とS5も条件を満たす商品を供給しています。
イの2は誤りです。重複を除いた後も、該当する仕入先コードは2種類ではなく3種類あります。
エの4は誤りです。条件を満たす商品は4行ですが、問われているのは行数ではなく、DISTINCT適用後の仕入先コード数です。
【ポイント】 副問合せは全商品の平均利益額360円を一つの値として返します。 「>」は平均と等しい値を含まないことに注意します。 DISTINCTは選択した列について重複を除くため、該当行数と結果のコード数は一致しないことがあります。
出典:令和4年度 秋期 応用情報技術者試験 午前 問28
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。
この回の80問を、アプリで通しで解く
- 本番と同じ問題数・制限時間で通し演習(模試モード)
- 間違えた問題は自動で「復習すべき問題」に回る
- 解説で分からない点はAIに質問できる