質問するログイン新規登録

回答編集履歴

2

動作を追加

2017/10/25 03:04

投稿

tacsheaven
tacsheaven

スコア13707

answer CHANGED
@@ -22,8 +22,13 @@
22
22
  ・項目Bが「赤でないもの」 (nA)
23
23
  それぞれの項目Aを出し、A にあって、かつ nA にないもの、すなわち、A と nA の差集合をとればよいことになります。
24
24
  ```SQL
25
- SELECT 項目A FROM テーブルA WHERE 項目B = '赤')
25
+ SELECT DISTINCT 項目A FROM テーブルA WHERE 項目B = '赤')
26
26
  EXCEPT
27
- SELECT 項目A FROM テーブルA WHERE 項目B <> '赤')
27
+ SELECT DISTINCT 項目A FROM テーブルA WHERE 項目B <> '赤')
28
28
  ```
29
- でいけそうです。
29
+ でいけそうです。
30
+ ※それぞれの SELECT の結果が、
31
+ {100, 200, 300, 400}
32
+ {100, 400}
33
+ となるので、差集合は
34
+ {200, 300}

1

質問意図が分かったので回答追加

2017/10/25 03:04

投稿

tacsheaven
tacsheaven

スコア13707

answer CHANGED
@@ -12,4 +12,18 @@
12
12
  ※「赤」であるなら、それは「青」でも「黄」でもないことは自明
13
13
 
14
14
 
15
- あるいは項目Bが複数の値をとれる構造になっていて、その中に「赤」が含まれていて「青」も「黄」も含まれていないなら取り出す、なのでしょうか?
15
+ あるいは項目Bが複数の値をとれる構造になっていて、その中に「赤」が含まれていて「青」も「黄」も含まれていないなら取り出す、なのでしょうか?
16
+
17
+ ---
18
+ 質問意図がようやくわかったので追加
19
+
20
+ 項目Aでグループ化した場合に、その中に「赤」しか含まないもの、を抽出するということなので、
21
+ ・項目Bが「赤」であるもの (A)
22
+ ・項目Bが「赤でないもの」 (nA)
23
+ それぞれの項目Aを出し、A にあって、かつ nA にないもの、すなわち、A と nA の差集合をとればよいことになります。
24
+ ```SQL
25
+ SELECT 項目A FROM テーブルA WHERE 項目B = '赤')
26
+ EXCEPT
27
+ SELECT 項目A FROM テーブルA WHERE 項目B <> '赤')
28
+ ```
29
+ でいけそうです。