平成27年度 春期 データベーススペシャリスト試験 午前II 問11
2025年6月30日
【問題11】
庭に訪れた野鳥の数を記録する “観測" 表がある。観測のたびに通番を振り、鳥名と観測数を記録している。AVG関数を用いて鳥名別に野鳥の観測数の平均値を得るために、一度も訪れた野鳥については、観測されなかったときの観測数を0とするデータを明示的に挿入する。SQL文のaに入る字句はどれか。ここで、通番は初回を1として、観測のタイミングごとにカウントアップされる。
【解説】
観測表に存在しないすべての(通番、鳥名)の組み合わせについて、観測数を0としてレコードを新規追加するSQLを考えます。
まず、(通番、鳥名)のすべての組み合わせを取得するために、観測表同士の直積を得ます。これは以下のSQLで取得できます。
SELECT DISTINCT obs1.通番, obs2.鳥名
FROM 観測 AS obs1, 観測 AS obs2
この結果から、観測表にまだ存在しない(通番、鳥名)の組み合わせを絞り込むために、相関副問い合わせを使用します。具体的には、以下のように記述します。
WHERE NOT EXISTS (
SELECT *
FROM 観測 AS obs3
WHERE obs1.通番 = obs3.通番
AND obs2.鳥名 = obs3.鳥名
)
したがって、aに入る字句は obs1.通番 = obs3.通番 となります。
【答え】
ウ: obs1.通番 = obs3.通番
出典:平成27年度 春期 データベーススペシャリスト試験 午前II 問11