プロが教えるわが家の防犯対策術!

下記の質問についてご教授お願い致します

[設問]
国語と数学の試験を実施し、2教科の成績は氏名とともに、得点表に記録されている。
1教科は平均点以上で、残りの1教科は平均点未満の生徒氏名を表から抽出するSQLはどれか。

A:国語の点数が国語の平均点以上
B:数学の点数が数学の平均点以上

とするときに、SQL文は

SELECT 生徒氏名 FROM 得点
WHERE (A OR B) AND NOT (A AND B)

となります。

このときに、

WHERE (A OR B) AND NOT (A AND B)

ここの論理演算を理解することが難しいです。

論理演算を分解すると

A OR B
国語または数学が平均点以上であるケース

NOT (A AND B)
国語と数学の両方が平均点以上であるケース


となり、この両者をANDで取ると
1教科は平均点以上で、残りの1教科は平均点未満になることになります。

この論理演算でどうしてもこのような結果を引き出すことができません。
お手数ですがご教授お願いいたします。

A 回答 (2件)

NOT(A AND B)は国語と数学のどちらかが平均点未満であるケースです。


NOT(A AND B) = (NOT A OR NOT B)
です。
    • good
    • 0
この回答へのお礼

たしかに、平均点未満のケースですね^^;

お礼日時:2006/09/08 12:05

(A or B) and not (A and B)は


(A or B) and ((not A) or (not B))と同じです。

これなら「どちらかが平均以上でどちらかが平均未満」ってことが分かりやすいのではないかと思います。

上の展開は高校の数学で「ド・モルガンの法則」として習うものです。
    • good
    • 1
この回答へのお礼

ド・モルガンの法則を久しぶりに聞きました。
参考になるアドバイスをありがとうございます。

お礼日時:2006/09/08 12:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!