“商品”表に対して、次の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 │
└────┴───┴────┴─────┴────┘
ア 1 イ 2 ウ 3 エ 4
ウ
DISTINCT は、重複を削除するための句である。
AVG() 関数は平均を求める関数である。
これらを踏まえると、
SELECT DISTINCT 仕入先コード FROM 商品
WHERE (販売単価 - 仕入単価) >
(SELECT AVG (販売単価 - 仕入単価) FROM 商品)
は、販売単価 - 仕入単価が“商品”表の販売単価 - 仕入単価の平均よりも大きい仕入先コードを“商品”表から重複なく取り出す。
という意味になる。
10個のレコードの販売単価-仕入単価の平均は
(200+200+100+900+400+200+300+500+500+300)÷10
= 3600 ÷ 10 = 360。
この値より大きい販売単価 - 仕入単価は、商品コードがD004, E005, H008, I009の4つであり、それぞれの仕入先コードは S1, S1, S4, S5だから、重複なく得られる仕入先コード数は3つである。
問27 | 目次 | 問29 |