[第58回]国家試験解説[AP令和4年秋]

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

“商品”表に対して,次のSQL文を実行して得られる仕入先コード数は幾つか。
〔SQL文〕
SELECT DISTINCT 仕入先コード FROM 商品
 WHERE (販売単価 – 仕入単価) >
  (SELECT AVG (販売単価 – 仕入単価) FROM 商品)”

ア:1   イ:2   ウ:3   エ:4

出典 IPA公開[過去問題]:https://www.ipa.go.jp/shiken/mondai-kaiotu/gmcbt80000008smf-att/2022r04a_ap_am_qs.pdf

「(SELECT AVG(販売単価 – 仕入単価) FROM 商品)」が実行されると結果として「360」という値が出ます。※各行で販売単価 – 仕入単価で差額を求めて平均値を出します。

結果として、「SELECT DISTINCT 仕入先コード FROM 商品 WHERE (販売単価 – 仕入単価) > 360」を実行します。そうすると差額の平均である360より大きい差額のレコードが抽出され、仕入先コードが「S1・S1・S4・S5」が該当します。

「DISTINCT 仕入先コード」とあります。この「DISTINCT 列名」は指定した列内で重複データがあった場合は1つにまとめてくれます。2つある「S1」が1つにまとめられるので、「S1・S4・S5」の3つとなります。

正解は、「ウ:3」です。