副問合せの平均と比較する SQL
出典: 令和4年度 秋期 応用情報技術者試験 午前 問28 (IPA)
“商品”表に対して,次の 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 |
- ア 1
- イ 2
- ウ 3
- エ 4
正解と解説を見る
正解: ウ
- ア: 1 になる計算はありません。差が平均 360 より大きい商品は 4 つあり、仕入先は 3 種類です。
- イ: 2 になる計算はありません。H (S4) と I (S5) の仕入先は別々です。
- ウ: S1、S4、S5 の 3 つなので正しい答えです。
- エ: 4 は差が平均を超える商品の数で、DISTINCT で同じ仕入先 (D と E の S1) をまとめていません。
ポイント
- 各商品の (販売単価 − 仕入単価): A 200、B 200、C 100、D 900、E 400、F 200、G 300、H 500、I 500、J 300
- 平均: 合計 3,600 ÷ 10 = 360
- 360 より大きい商品: D (S1)、E (S1)、H (S4)、I (S5)
- DISTINCT で重複を除くと S1、S4、S5 の 3 つ です。