平成21年度 技術士第一次試験問題【専門科目】
【16】情報工学部門
W−26
「地域」「避難場所」「場所設備」「設備」の4つのテーブルがある。
それぞれの関係スキーマ及び設備表は次のとおりである。
ここで、下線部を主キーとする。
  地  域  (地域ID, 地域名)
  避難場所 (避難場所ID, 地域ID, 場所名, 収容人教)
  場所設備 (避難場所ID, 設備ID)
  設  備  (設備ID, 設備名)
 
        設備表
 ┌────┬───────┐
 │設備ID│  設備名  │
 ├────┼───────┤
 │  1  │防災備蓄倉庫 │
 ├────┼───────┤
 │  2  │飲料水貯水槽 │
 ├────┼───────┤
 │  3  │応急救護所  │
 └────┴───────┘

地域防災計画のため、飲料水貯水槽のある避難所の収容人数について
地域ごとの集計表を作成するSQL文を作成した。 ア  イ  入る
組合せとして最も適切なものを@〜Dの中から選べ。

SELECT A.地域名, SUM(P.収容人数) FROM 地域 AS A, 避難場所 AS P
 WHERE A.地域ID = P.地域ID
 AND     ア    
  (SELECT L.避難場所ID FROM 場所設備 AS L, 設備 AS S
   WHERE L.設備ID = S.設備ID AND S.設備名 = '飲料水貯水槽')
     イ    

                    
 @ P.避難場所ID IN  GROUP BY A.地域名
 A P.避難場所ID IN  HAVING A.地域名
 B P.避難場所ID =   ORDER BY A.地域名
 C P.避難場所ID =   GROUP BY A.地域名
 D P.避難場所ID =   HAVING A.地域名



【正解】 @

(SELECT
L.避難場所ID FROM 場所設備 AS L, 設備 AS S
   
WHERE L.設備ID = S.設備ID AND S.設備名 = '飲料水貯水槽')
の意味は、
場所設備テーブルL, 設備テーブルと短く表示して、
 設備テーブルの設備名が、'飲料水貯水槽' で、かつ
 場所設備テーブルの設備IDと設備テーブルの設備IDが一致する中から
 場所設備テーブルの避難場所IDを取り出す
という意味である。

P.避難場所ID IN ( ) は 
括弧内の要素と、避難場所テーブルの避難場所IDが一致する
という意味であり、 = は使用せず、 INを利用する。

HAVING は、 GROUP BY でグループ化されたデータに対して
条件で絞り込む時に使用する。


EXCELのマクロのご相談なら ファーストマクロ 



W−25 目次 W−27
ファーストマクロ TOPページ