回答編集履歴

9

変更

2017/08/28 07:37

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -1,3 +1,35 @@
1
+ 過去を整理しました
2
+
3
+ > 要は、組織コードSSに所属して、'東京'に住んでいてアクションフラグが'0'の人って何人いるの?
4
+
5
+ SSのみでよろしければ
6
+
7
+ ```sql
8
+
9
+ SELECT 'SS' 組織コード, COUNT(DISTINCT t4.会員ID) FROM
10
+
11
+ (SELECT t1.会員ID FROM テーブル1 t1
12
+
13
+ JOIN テーブル2 t2 ON t1.会員ID=t2.会員ID AND t2.アクションフラグ=0
14
+
15
+ WHERE 'SS' = ANY(複数組織コード) AND 住所 ='東京'
16
+
17
+ UNION
18
+
19
+ SELECT t1.会員ID FROM テーブル1 t1
20
+
21
+ JOIN テーブル2 t2 ON t1.会員ID=t2.会員ID AND t2.アクションフラグ=0 AND 住所='東京'
22
+
23
+ LEFT JOIN テーブル3 t3 ON t1.会員ID=t3.会員ID AND t3.組織コード='SS'
24
+
25
+ ) t4
26
+
27
+ ;
28
+
29
+ ```
30
+
31
+
32
+
1
33
  テーブル3の会員の住所の条件を追加しました。
2
34
 
3
35
  ```sql
@@ -65,147 +97,3 @@
65
97
  GROUP BY 1;
66
98
 
67
99
  ```
68
-
69
-
70
-
71
- 組織コードの選択条件テーブル1とテーブル3で同じ場合
72
-
73
- ```sql
74
-
75
- SELECT ORG, COUNT(DISTINCT T1.会員ID) FROM
76
-
77
- (SELECT ORG, 会員ID FROM
78
-
79
- (SELECT 会員ID, UNNEST(t4.複数組織コード) ORG
80
-
81
- FROM (SELECT t5.* FROM テーブル1 t5
82
-
83
- JOIN テーブル2 t2 ON t5.会員ID=t2.会員ID AND t2.アクションフラグ=0
84
-
85
- WHERE 住所 IN ('東京')
86
-
87
- ) t4
88
-
89
- ) t0
90
-
91
- UNION
92
-
93
- SELECT t6.組織コード, t6.会員ID FROM テーブル3 t6
94
-
95
- JOIN テーブル2 t2 ON t6.会員ID=t2.会員ID AND t2.アクションフラグ=0
96
-
97
- ) t1 WHERE ORG IN ('AA','SS','KK')
98
-
99
- GROUP BY 1;
100
-
101
- ```
102
-
103
-
104
-
105
- 修正テーブル名はそのままですねバージョン
106
-
107
- ```sql
108
-
109
- SELECT ORG, COUNT(DISTINCT T1.会員ID) FROM
110
-
111
- (SELECT ORG, 会員ID FROM
112
-
113
- (SELECT 会員ID, UNNEST(t4.ORGANIZATIONS) ORG
114
-
115
- FROM (SELECT t5.* FROM テーブル1 t5
116
-
117
- JOIN テーブル2 t2 ON t5.会員ID=t2.会員ID AND t2.アクションフラグ=0
118
-
119
- WHERE 住所 IN ('東京')
120
-
121
- ) t4
122
-
123
- ) t0 WHERE ORG IN ('AA','SS','KK')
124
-
125
- UNION
126
-
127
- SELECT ORGANIZATION, t6.会員ID FROM テーブル3 t6
128
-
129
- JOIN テーブル2 t2 ON t6.会員ID=t2.会員ID AND t2.アクションフラグ=0
130
-
131
- WHERE t6.ORGANIZATION='SS'
132
-
133
- ) t1
134
-
135
- GROUP BY 1;
136
-
137
- ```
138
-
139
-
140
-
141
- テーブル2の名前はご自身で変換をお願いします。また、変更に問題が有ればご指摘ください。
142
-
143
- ```sql
144
-
145
- SELECT ORG, COUNT(DISTINCT T1.会員ID) FROM
146
-
147
- (SELECT ORG, 会員ID FROM
148
-
149
- (SELECT 会員ID, UNNEST(t4.複数組織コード) ORG
150
-
151
- FROM (SELECT t5.* FROM ORGANIZATIONS t5
152
-
153
- JOIN テーブル2 t2 ON t5.会員ID=t2.会員ID AND t2.アクションフラグ=0
154
-
155
- WHERE 住所 IN ('東京')
156
-
157
- ) t4
158
-
159
- ) t0 WHERE ORG IN ('AA','SS','KK')
160
-
161
- UNION
162
-
163
- SELECT 組織コード, t6.会員ID FROM ORGANIZATION t6
164
-
165
- JOIN テーブル2 t2 ON t6.会員ID=t2.会員ID AND t2.アクションフラグ=0
166
-
167
- WHERE t6.組織コード='SS'
168
-
169
- ) t1
170
-
171
- GROUP BY 1;
172
-
173
- ```
174
-
175
-
176
-
177
-
178
-
179
- 前回のSQLでは時間が掛かると言われたので、unnestする前に条件で絞る様に変更したのですが、どのようなエラーが出ているか教えて頂けると有難いです。
180
-
181
- ```sql
182
-
183
- SELECT ORG, COUNT(DISTINCT T1.会員ID) FROM
184
-
185
- (SELECT ORG, 会員ID FROM
186
-
187
- (SELECT 会員ID, UNNEST(t4.組織コード) ORG
188
-
189
- FROM (SELECT t5.* FROM テーブル1 t5
190
-
191
- JOIN テーブル2 t2 ON t5.会員ID=t2.会員ID AND t2.アクションフラグ=0
192
-
193
- WHERE 住所 IN ('東京')
194
-
195
- ) t4
196
-
197
- ) t0 WHERE ORG IN ('AA','SS','KK')
198
-
199
- UNION
200
-
201
- SELECT 組織コード, t6.会員ID FROM テーブル3 t6
202
-
203
- JOIN テーブル2 t2 ON t6.会員ID=t2.会員ID AND t2.アクションフラグ=0
204
-
205
- WHERE 組織コード='SS'
206
-
207
- ) t1
208
-
209
- GROUP BY 1;
210
-
211
- ```

8

追加

2017/08/28 07:37

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -1,3 +1,39 @@
1
+ テーブル3の会員の住所の条件を追加しました。
2
+
3
+ ```sql
4
+
5
+ SELECT ORG, COUNT(DISTINCT T1.会員ID) FROM
6
+
7
+ (SELECT ORG, 会員ID FROM
8
+
9
+ (SELECT 会員ID, UNNEST(t4.複数組織コード) ORG
10
+
11
+ FROM (SELECT t5.* FROM テーブル1 t5
12
+
13
+ JOIN テーブル2 t2 ON t5.会員ID=t2.会員ID AND t2.アクションフラグ=0
14
+
15
+ WHERE 住所 IN ('東京')
16
+
17
+ ) t4
18
+
19
+ ) t0 WHERE ORG IN ('AA','SS','KK')
20
+
21
+ UNION
22
+
23
+ SELECT t6.組織コード, t6.会員ID FROM テーブル3 t6
24
+
25
+ JOIN テーブル2 t2 ON t6.会員ID=t2.会員ID AND t2.アクションフラグ=0
26
+
27
+ JOIN テーブル1 t1 ON t6.会員ID=t1.会員ID AND 住所 IN ('東京')
28
+
29
+ ) t1
30
+
31
+ GROUP BY 1;
32
+
33
+ ```
34
+
35
+
36
+
1
37
  テーブル1、テーブル3で特定の組織コードを持つ・・・・を特定の組織コードを選ぶと解釈していました、特定の組織コートに属する会員が存在しているですね、修正しました。
2
38
 
3
39
  ```

7

追加

2017/08/28 06:29

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -1,3 +1,37 @@
1
+ テーブル1、テーブル3で特定の組織コードを持つ・・・・を特定の組織コードを選ぶと解釈していました、特定の組織コートに属する会員が存在しているですね、修正しました。
2
+
3
+ ```
4
+
5
+ SELECT ORG, COUNT(DISTINCT T1.会員ID) FROM
6
+
7
+ (SELECT ORG, 会員ID FROM
8
+
9
+ (SELECT 会員ID, UNNEST(t4.複数組織コード) ORG
10
+
11
+ FROM (SELECT t5.* FROM テーブル1 t5
12
+
13
+ JOIN テーブル2 t2 ON t5.会員ID=t2.会員ID AND t2.アクションフラグ=0
14
+
15
+ WHERE 住所 IN ('東京')
16
+
17
+ ) t4
18
+
19
+ ) t0 WHERE ORG IN ('AA','SS','KK')
20
+
21
+ UNION
22
+
23
+ SELECT t6.組織コード, t6.会員ID FROM テーブル3 t6
24
+
25
+ JOIN テーブル2 t2 ON t6.会員ID=t2.会員ID AND t2.アクションフラグ=0
26
+
27
+ ) t1
28
+
29
+ GROUP BY 1;
30
+
31
+ ```
32
+
33
+
34
+
1
35
  組織コードの選択条件テーブル1とテーブル3で同じ場合
2
36
 
3
37
  ```sql

6

変更

2017/08/28 06:18

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -20,7 +20,7 @@
20
20
 
21
21
  UNION
22
22
 
23
- SELECT 組織コード, t6.会員ID FROM テーブル3 t6
23
+ SELECT t6.組織コード, t6.会員ID FROM テーブル3 t6
24
24
 
25
25
  JOIN テーブル2 t2 ON t6.会員ID=t2.会員ID AND t2.アクションフラグ=0
26
26
 

5

変更

2017/08/28 06:02

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -1,4 +1,38 @@
1
+ 組織コードの選択条件テーブル1とテーブル3で同じ場合
2
+
3
+ ```sql
4
+
5
+ SELECT ORG, COUNT(DISTINCT T1.会員ID) FROM
6
+
7
+ (SELECT ORG, 会員ID FROM
8
+
9
+ (SELECT 会員ID, UNNEST(t4.複数組織コード) ORG
10
+
11
+ FROM (SELECT t5.* FROM テーブル1 t5
12
+
13
+ JOIN テーブル2 t2 ON t5.会員ID=t2.会員ID AND t2.アクションフラグ=0
14
+
15
+ WHERE 住所 IN ('東京')
16
+
17
+ ) t4
18
+
19
+ ) t0
20
+
21
+ UNION
22
+
23
+ SELECT 組織コード, t6.会員ID FROM テーブル3 t6
24
+
25
+ JOIN テーブル2 t2 ON t6.会員ID=t2.会員ID AND t2.アクションフラグ=0
26
+
27
+ ) t1 WHERE ORG IN ('AA','SS','KK')
28
+
29
+ GROUP BY 1;
30
+
31
+ ```
32
+
33
+
34
+
1
- だらに修正テーブル名はそのままですねバージョン
35
+ 修正テーブル名はそのままですねバージョン
2
36
 
3
37
  ```sql
4
38
 

4

変更

2017/08/28 06:00

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -24,7 +24,7 @@
24
24
 
25
25
  JOIN テーブル2 t2 ON t6.会員ID=t2.会員ID AND t2.アクションフラグ=0
26
26
 
27
- WHERE ORGANIZATION='SS'
27
+ WHERE t6.ORGANIZATION='SS'
28
28
 
29
29
  ) t1
30
30
 
@@ -60,7 +60,7 @@
60
60
 
61
61
  JOIN テーブル2 t2 ON t6.会員ID=t2.会員ID AND t2.アクションフラグ=0
62
62
 
63
- WHERE 組織コード='SS'
63
+ WHERE t6.組織コード='SS'
64
64
 
65
65
  ) t1
66
66
 

3

変更

2017/08/28 04:35

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -1,3 +1,39 @@
1
+ だらに修正テーブル名はそのままですねバージョン
2
+
3
+ ```sql
4
+
5
+ SELECT ORG, COUNT(DISTINCT T1.会員ID) FROM
6
+
7
+ (SELECT ORG, 会員ID FROM
8
+
9
+ (SELECT 会員ID, UNNEST(t4.ORGANIZATIONS) ORG
10
+
11
+ FROM (SELECT t5.* FROM テーブル1 t5
12
+
13
+ JOIN テーブル2 t2 ON t5.会員ID=t2.会員ID AND t2.アクションフラグ=0
14
+
15
+ WHERE 住所 IN ('東京')
16
+
17
+ ) t4
18
+
19
+ ) t0 WHERE ORG IN ('AA','SS','KK')
20
+
21
+ UNION
22
+
23
+ SELECT ORGANIZATION, t6.会員ID FROM テーブル3 t6
24
+
25
+ JOIN テーブル2 t2 ON t6.会員ID=t2.会員ID AND t2.アクションフラグ=0
26
+
27
+ WHERE ORGANIZATION='SS'
28
+
29
+ ) t1
30
+
31
+ GROUP BY 1;
32
+
33
+ ```
34
+
35
+
36
+
1
37
  テーブル2の名前はご自身で変換をお願いします。また、変更に問題が有ればご指摘ください。
2
38
 
3
39
  ```sql

2

変更

2017/08/28 03:56

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -1,3 +1,41 @@
1
+ テーブル2の名前はご自身で変換をお願いします。また、変更に問題が有ればご指摘ください。
2
+
3
+ ```sql
4
+
5
+ SELECT ORG, COUNT(DISTINCT T1.会員ID) FROM
6
+
7
+ (SELECT ORG, 会員ID FROM
8
+
9
+ (SELECT 会員ID, UNNEST(t4.複数組織コード) ORG
10
+
11
+ FROM (SELECT t5.* FROM ORGANIZATIONS t5
12
+
13
+ JOIN テーブル2 t2 ON t5.会員ID=t2.会員ID AND t2.アクションフラグ=0
14
+
15
+ WHERE 住所 IN ('東京')
16
+
17
+ ) t4
18
+
19
+ ) t0 WHERE ORG IN ('AA','SS','KK')
20
+
21
+ UNION
22
+
23
+ SELECT 組織コード, t6.会員ID FROM ORGANIZATION t6
24
+
25
+ JOIN テーブル2 t2 ON t6.会員ID=t2.会員ID AND t2.アクションフラグ=0
26
+
27
+ WHERE 組織コード='SS'
28
+
29
+ ) t1
30
+
31
+ GROUP BY 1;
32
+
33
+ ```
34
+
35
+
36
+
37
+
38
+
1
39
  前回のSQLでは時間が掛かると言われたので、unnestする前に条件で絞る様に変更したのですが、どのようなエラーが出ているか教えて頂けると有難いです。
2
40
 
3
41
  ```sql

1

変更

2017/08/28 03:44

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  FROM (SELECT t5.* FROM テーブル1 t5
12
12
 
13
- JOIN テーブル2 t2 ON t5.会員ID=t2.会員ID AND t2.アクションフラグ=1
13
+ JOIN テーブル2 t2 ON t5.会員ID=t2.会員ID AND t2.アクションフラグ=0
14
14
 
15
15
  WHERE 住所 IN ('東京')
16
16
 
@@ -22,7 +22,7 @@
22
22
 
23
23
  SELECT 組織コード, t6.会員ID FROM テーブル3 t6
24
24
 
25
- JOIN テーブル2 t2 ON t6.会員ID=t2.会員ID AND t2.アクションフラグ=1
25
+ JOIN テーブル2 t2 ON t6.会員ID=t2.会員ID AND t2.アクションフラグ=0
26
26
 
27
27
  WHERE 組織コード='SS'
28
28