過去問解きまくり研究所 ホーム

平成28年度 秋期 午前 問29

データベース

次のSQL文を実行したときの結果

“社員”表と“部門”表に対して,次の SQL 文を実行したときの結果はどれか。

SELECT COUNT(*) FROM 社員, 部門
    WHERE 社員.所属 = 部門.部門名 AND 部門.フロア = 2

社員(原典は表):

社員番号所属
11001総務
11002経理
11003営業
11004営業
11005情報システム
11006営業
11007企画
12001営業
12002情報システム

部門(原典は表):

部門名フロア
企画1
総務1
情報システム2
営業3
経理2
法務2
購買2
答えと解説を見る

✓ これが正解ウ3

解説

フロアが2の部署に所属する社員は3人です。

このSQL文は、二つの表を総当たりで組み合わせたうえで、条件を同時に満たす行だけを数えています。条件は、社員の所属が部門名と一致していることと、その部門のフロアが2であることの二つです。順に絞っていきます。まず部門の側でフロアが2の行を探すと、情報システム、経理、法務、購買の四つが見つかりました。次に社員の側を見て、所属がこの四つのいずれかになっている人を数えます。経理が1人、情報システムが2人で、法務と購買には所属する人がいませんでした。合わせて3行が残るので、この文は3を返します。ここで気をつけたいのは、数えているのが部署の数ではなく、条件に合った行の数だという点です。同じ部署に複数の人が属していれば、その人数だけ行ができます。逆に、条件に合う部署でも所属する人がいなければ、行は一つも生まれません。残る三つのうち二つは、行ではなく部署の側を数えたときの数でした。もう一つは、この二つの表を突き合わせても出てきません。

ほかの選択肢はなぜ違うのか

この問題の用語

出典:平成28年度 秋期 基本情報技術者試験 午前 問29

同じ用語が出る問題

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)