修了試験 2021-12-12実施分 基本情報技術者試験 問27
“社員”表と“部門”表に対して,次のSQL文を実行したときの結果はどれか。 SELECT COUNT(*) FROM 社員, 部門 WHERE 社員.所属 = 部門.部門名 AND 部門.フロア = 2 〔社員表:社員番号|所属〕 11001|総務/11002|経理/11003|営業/11004|営業/11005|情報システム/11006|営業/11007|企画/12001|営業/12002|情報システム 〔部門表:部門名|フロア〕 企画|1/総務|1/情報システム|2/営業|3/経理|2/法務|2/購買|2
正答3
解説
正解は3です。 2つの表を結合し、条件に合う行数を数えるSQL文の結果を求める問題です。 WHERE句の「社員.所属=部門.部門名」で社員と所属部門を対応させ、「部門.フロア=2」で2階の部門に絞ります。 COUNT(*)は条件に合う行の数を返します。 【計算】 部門表でフロアが2の部門は、情報システム、経理、法務、購買の4つです。 社員表で経理に所属するのは、11002の1人です。 情報システムに所属するのは、11005と12002の2人です。 法務と購買に所属する社員はいません。 したがって、条件に合う行は1+2=3行です。 【選択肢別解説】 1:× 1は、経理の社員だけを数えた値です。 情報システムの2人も条件を満たします。 2:× 2は、情報システムの社員だけを数えた値です。 経理の11002も条件を満たします。 3:○ 2階の部門に所属する社員は、11002、11005、12002の3人です。 結合後の行数は3なので、COUNT(*)は3を返します。 4:× 4は、フロアが2の部門の数です。 COUNT(*)が数えるのは結合後の行数で、社員がいない法務と購買は結果に現れません。 【ポイント】 FROM句に2つの表を並べてWHERE句で等しい列を指定すると、結合(内部結合)になります。 相手の表に対応する行がない部門は、結合後の結果に残りません。まとめて解く
修了試験 2021-12-12実施分を通しで解く(80問)→