基本情報技術者試験 - 令和5年7月修了 - 問20
国語と数学の試験を実施し,2教科の成績は氏名とともに “得点” 表に記録されている。1教科は平均点以上で,残りの1教科は平均点未満の生徒氏名を “得点” 表から抽出するSQL文はどれか。ここで,条件文Aと条件文Bには,それぞれ次の条件が与えられているものとする。
〔条件文〕
A 国語の点数が国語の平均点以上
B 数学の点数が数学の平均点以上
〔条件文〕
A 国語の点数が国語の平均点以上
B 数学の点数が数学の平均点以上
| ア | SELECT 生徒氏名 FROM 得点 WHERE(A AND B)AND NOT(A AND B) |
|---|---|
| イ | SELECT 生徒氏名 FROM 得点 WHERE(A AND B)AND NOT(A OR B) |
| ウ | SELECT 生徒氏名 FROM 得点 WHERE(A OR B)AND NOT(A AND B) |
| エ | SELECT 生徒氏名 FROM 得点 WHERE(A OR B)AND NOT(A OR B) |
答え : ウ
分野 : テクノロジ系 › 技術要素 › データベース › データ操作
解説 :
国語と数学の2教科について,「1教科は平均点以上で,残りの1教科は平均点未満」という条件を満たす生徒を抽出するSQL文を選ぶ問題です。
条件文Aを「国語が平均点以上」,条件文Bを「数学が平均点以上」とすると,求めたいのは,AとBのどちらか一方だけが成り立っていて,両方とも成り立っている場合や,両方とも成り立っていない場合は除外したい,という状況です。これは,AとBのどちらか一方でも成り立っていること(A OR B)を満たしつつ,同時に両方とも成り立っている場合(A AND B)は除外するという条件で表現できます。従って,「(A OR B)AND NOT(A AND B)」という条件文が,求めている状況を正しく表しており,正解は「ウ」です。
「ア」は,(A AND B)を満たしつつ,その否定でもある(NOT(A AND B)を満たすという矛盾した条件になっており,常に真になることがない,意味を持たない式です。
「イ」は,AとBの両方が成り立っていることを求めつつ,AまたはBが成り立っていないことも同時に求めており,これも常には成立しない条件です。
「エ」は,AまたはBのどちらかが成り立っていることを求めつつ,AまたはBのどちらも成り立っていないことも同時に求めるという,これもまた矛盾した条件になっています。
「1教科だけが条件を満たす」という状況を表すには,「どちらか一方」(OR)を満たしつつ「両方」は(AND)除外するという考え方が必要になる点がポイントです。
分野 : テクノロジ系 › 技術要素 › データベース › データ操作
解説 :
国語と数学の2教科について,「1教科は平均点以上で,残りの1教科は平均点未満」という条件を満たす生徒を抽出するSQL文を選ぶ問題です。
条件文Aを「国語が平均点以上」,条件文Bを「数学が平均点以上」とすると,求めたいのは,AとBのどちらか一方だけが成り立っていて,両方とも成り立っている場合や,両方とも成り立っていない場合は除外したい,という状況です。これは,AとBのどちらか一方でも成り立っていること(A OR B)を満たしつつ,同時に両方とも成り立っている場合(A AND B)は除外するという条件で表現できます。従って,「(A OR B)AND NOT(A AND B)」という条件文が,求めている状況を正しく表しており,正解は「ウ」です。
「ア」は,(A AND B)を満たしつつ,その否定でもある(NOT(A AND B)を満たすという矛盾した条件になっており,常に真になることがない,意味を持たない式です。
「イ」は,AとBの両方が成り立っていることを求めつつ,AまたはBが成り立っていないことも同時に求めており,これも常には成立しない条件です。
「エ」は,AまたはBのどちらかが成り立っていることを求めつつ,AまたはBのどちらも成り立っていないことも同時に求めるという,これもまた矛盾した条件になっています。
「1教科だけが条件を満たす」という状況を表すには,「どちらか一方」(OR)を満たしつつ「両方」は(AND)除外するという考え方が必要になる点がポイントです。