応用情報技術者試験 令和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」です。