平成22年 春期 データベーススペシャリスト 午前II 問14

“製品”表と“在庫”表に対して、次のSQLを実行した結果として得られる表の行数は幾つか。

 SELECT DISTINCT 製品番号 FROM 製品
        WHERE NOT EXISTS ( SELECT 製品番号 FROM 在庫
               WHERE 在庫数 > 30 AND 製品.製品番号 = 在庫.製品番号 )

製品
製品番号 製品名 単価
AB1805 CD-ROMドライブ 15,000
CC5001 デジタルカメラ 65,000
MZ1000 プリンターA 54,000
MZ3000 プリンターB 78,000
ZZ9900 イメージスキャナ 98,000
在庫
倉庫コード 製品番号 在庫数
WH100 AB1805 20
WH100 CC5001 200
WH100 ZZ9900 130
WH101 AB1805 150
WH101 XZ3000 30
WH101 XZ3000 20
WH102 ZZ9900 10
WH103 CC5001 40

 ア  1  イ  2  ウ  3  エ  4


答え イ


解説
問題のSQL文
 SELECT DISTINCT 製品番号 FROM 製品
        WHERE NOT EXISTS ( SELECT 製品番号 FROM 在庫
               WHERE 在庫数 > 30 AND 製品.製品番号 = 在庫.製品番号 )

 SELECT 製品番号 FROM 在庫
        WHERE 在庫数 > 30 AND 製品.製品番号 = 在庫.製品番号 )
は、“製品”表と“在庫”表の両方にある製品番号で、在庫数が30より大きい製品番号を出力するので

@
製品番号
CC5001
ZZ9900
AB1805
CC5001
になる。
 SELECT DISTINCT 製品番号 FROM 製品
        WHERE NOT EXISTS (@)
は、“製品”表において、上の@表にはない製品番号を重複なく出力するので
製品番号
MZ1000
MZ3000
2行(イ)になる。


キーワード
・SQL文

キーワードの解説
  • SQL文
    SQL文で出てくる句について説明します。
    • SELECT
      出力するデータを指定します。
    • DISTINCT
      同じ内容の(重複した)データを除きます。
    • FROM
      操作するデータを指定します。
    • AS
      操作するデータの名前を変えます。
    • WHERE
      操作する条件を指定します。
    • GROUP BY
      同じ内容のデータをまとめます。
    • HAVING
      GROUP BYで抽出条件を指定する。
    • COUNT
      個数を数えます。
    • SUM
      集計(加算)します。
    • AVG
      平均値を計算します。

もっと、「DISTINCT」について調べてみよう。

戻る 一覧へ 次へ