修了試験 2018-01-28実施分 基本情報技術者試験 問29
"社員"表と"部門"表に対して,次の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つの表を結合し、条件に合う行の件数をCOUNT(*)で数えるSQL文の結果を求める問題です。 WHERE句は、社員の所属と部門名が一致し、かつその部門のフロアが2である行を取り出します。 【計算】 "部門"表でフロアが2の部門は、情報システム、経理、法務、購買の4つです。 "社員"表で所属が経理の社員は、11002の1人です。 所属が情報システムの社員は、11005と12002の2人です。 所属が法務と購買の社員はいません。 条件に合う行は1+2=3行なので、COUNT(*)の結果は3です。 【選択肢別解説】 1:× 1は経理の社員だけを数えた値です。 情報システムの2人も条件に合います。 2:× 2は情報システムの社員だけを数えた値です。 経理の1人も条件に合います。 3:○ フロア2の部門に所属する社員は11002、11005、12002の3人なので、結果は3です。 4:× 4はフロア2の部門の数です。 COUNT(*)が数えるのは結合結果の行数、つまり条件に合う社員の数です。 【ポイント】 FROM句に複数の表を書き、WHERE句で結合条件を指定すると、内部結合と同じ結果になります。 社員のいない部門(法務と購買)は結合結果に現れない点に注意します。まとめて解く
修了試験 2018-01-28実施分を通しで解く(80問)→