庭に訪れた野鳥の数を記録する“観測”表がある。
観測のたびに通番を振り、鳥名と観測数を記録している。
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文