修了試験 2023-12-10実施分 基本情報技術者試験 問20
“社員”表と“部門”表に対して,次の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つの表を所属と部門名で結合し、フロアが2の部門に所属する社員の行数を数えるSQL文です。 COUNT(*)は、条件を満たす行の数を返します。 【計算】 部門表でフロアが2の部門は、情報システム、経理、法務、購買です。 社員表で所属が経理の社員は11002の1人です。 所属が情報システムの社員は11005と12002の2人です。 法務と購買に所属する社員はいません。 したがって行数は1+2=3です。 【選択肢別解説】 1:× 1は、経理の社員だけを数えた値です。 情報システムの2人が漏れています。 2:× 2は、情報システムの社員だけを数えた値です。 経理の1人が漏れています。 3:○ 結合後にフロア2の条件を満たす行は、11002、11005、12002の3行です。 4:× 4は、フロアが2の部門の数です。 COUNT(*)が数えるのは結合結果の行数であり、部門数ではありません。 【ポイント】 FROM句に表を並べてWHERE句で結合条件を書くと、内部結合になります。 相手の表に一致する行がない部門は、結果に現れません。まとめて解く
修了試験 2023-12-10実施分を通しで解く(60問)→