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

庭に訪れた野鳥の数を記録する“観測”表がある。
観測のたびに通番を振り、鳥名と観測数を記録している。
AVG関数を用いて鳥名別に野鳥の観測数の平均値を得るために、一度でも訪れた野鳥については、観測されなかったときの観測数を0とするデータを明示的に挿入する。
SQL文のaに入る字句はどれか。
ここで、通番は初回を1として、観測のタイミングごとにカウントアップする。

 CREATE TABLE 観測(
   通番   INTEGER,
   鳥名   CHAR(20),
   観測数  INTEGER,
 PRIMARY KEY (通番, 鳥名))

 INSERT INTO 観測
   SELECT DISTINCT obs1.通番, obs2.鳥名, 0
     FROM 観測 AS obs1, 観測 AS obs2
   WHERE NOT EXISTS(
     SELECT * FROM 観測 AS obs3
       WHERE   a  
         AND obs2.鳥名 = obs3.鳥名)

 ア  obs1.通番 = obs1.通番
 イ  obs1.通番 = obs2.通番
 ウ  obs1.通番 = obs3.通番
 エ  obs2.通番 = obs3.通番


答え ウ


解説
観測されなかったときの観測数を0とするデータを明示的に挿入するには、過去に観測した鳥名に、今回観測した鳥名があったらそれを除くという処理が必要になる。
また、「SELECT DISTINCT obs1.通番, obs2.鳥名, 0」からobs1が今回の観測データ、obs2が過去の観測データになり、「obs2.鳥名 = obs3.鳥名」からobs3を今回の観測データになるので、aにはobs1とobs3が今回の観測データであることを関連付ける字句が入るので
 obs1.通番 = obs3.通番
(ウ)になります。


キーワード
・SQL文

キーワードの解説

戻る 一覧へ 次へ