基本情報技術者試験 - 令和7年6月修了 - 問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) |
答え : ウ
分野 : テクノロジ系 › 技術要素 › データベース › データ操作
解説 :
条件文Aを「国語が平均点以上」,条件文Bを「数学が平均点以上」とすると,求めたいのは「AとBのどちらか一方だけが真である」生徒,すなわち論理演算でいう排他的論理和(XOR)に相当する条件です。これは「AまたはBが成り立つ」かつ「AとBが同時には成り立たない」という条件で表現できます。
つまり「(A OR B)AND NOT(A AND B)」となり,これに合致するのは「ウ」です。「ア」は「(A AND B)AND NOT(A AND B)」となっており,これは常に偽になってしまい,どの生徒も抽出されません。「イ」も同様に矛盾した条件になっています。「エ」は「(A OR B)AND NOT(A OR B)」であり,これも常に偽になる恒偽式です。論理演算の基本であるXORの表現方法を正しく理解しておくことがポイントです。
分野 : テクノロジ系 › 技術要素 › データベース › データ操作
解説 :
条件文Aを「国語が平均点以上」,条件文Bを「数学が平均点以上」とすると,求めたいのは「AとBのどちらか一方だけが真である」生徒,すなわち論理演算でいう排他的論理和(XOR)に相当する条件です。これは「AまたはBが成り立つ」かつ「AとBが同時には成り立たない」という条件で表現できます。
つまり「(A OR B)AND NOT(A AND B)」となり,これに合致するのは「ウ」です。「ア」は「(A AND B)AND NOT(A AND B)」となっており,これは常に偽になってしまい,どの生徒も抽出されません。「イ」も同様に矛盾した条件になっています。「エ」は「(A OR B)AND NOT(A OR B)」であり,これも常に偽になる恒偽式です。論理演算の基本であるXORの表現方法を正しく理解しておくことがポイントです。