過去問解きまくり研究所 ホーム

令和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 文を商品表に対して実行したときに得られる仕入先コード数を問うています。読み解く順は四段です。まず各行について、販売単価から仕入単価を引いた値を出します。次に、副問合せが返す平均を求めます。副問合せには絞り込みの条件が付いていないので、十行すべてが平均の対象です。引いた値の合計は3,600、行数は10なので、平均は360になります。続いて、その値が360を超える行を拾うと、900のD004、400のE005、500のH008、500のI009という四行が残ります。最後に、重複を除く指定が効くので、この四行が持つ仕入先コードから重なりを取り除きます。残るのはS1とS4とS5の三つで、これが正解です。

ほかの選択肢はなぜ違うのか

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

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)