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

回答編集履歴

9

変更

2017/08/28 07:37

投稿

A.Ichi
A.Ichi

スコア4070

answer CHANGED
@@ -1,3 +1,19 @@
1
+ 過去を整理しました
2
+ > 要は、組織コードSSに所属して、'東京'に住んでいてアクションフラグが'0'の人って何人いるの?
3
+ SSのみでよろしければ
4
+ ```sql
5
+ SELECT 'SS' 組織コード, COUNT(DISTINCT t4.会員ID) FROM
6
+ (SELECT t1.会員ID FROM テーブル1 t1
7
+ JOIN テーブル2 t2 ON t1.会員ID=t2.会員ID AND t2.アクションフラグ=0
8
+ WHERE 'SS' = ANY(複数組織コード) AND 住所 ='東京'
9
+ UNION
10
+ SELECT t1.会員ID FROM テーブル1 t1
11
+ JOIN テーブル2 t2 ON t1.会員ID=t2.会員ID AND t2.アクションフラグ=0 AND 住所='東京'
12
+ LEFT JOIN テーブル3 t3 ON t1.会員ID=t3.会員ID AND t3.組織コード='SS'
13
+ ) t4
14
+ ;
15
+ ```
16
+
1
17
  テーブル3の会員の住所の条件を追加しました。
2
18
  ```sql
3
19
  SELECT ORG, COUNT(DISTINCT T1.会員ID) FROM
@@ -31,76 +47,4 @@
31
47
  JOIN テーブル2 t2 ON t6.会員ID=t2.会員ID AND t2.アクションフラグ=0
32
48
  ) t1
33
49
  GROUP BY 1;
34
- ```
35
-
36
- 組織コードの選択条件テーブル1とテーブル3で同じ場合
37
- ```sql
38
- SELECT ORG, COUNT(DISTINCT T1.会員ID) FROM
39
- (SELECT ORG, 会員ID FROM
40
- (SELECT 会員ID, UNNEST(t4.複数組織コード) ORG
41
- FROM (SELECT t5.* FROM テーブル1 t5
42
- JOIN テーブル2 t2 ON t5.会員ID=t2.会員ID AND t2.アクションフラグ=0
43
- WHERE 住所 IN ('東京')
44
- ) t4
45
- ) t0
46
- UNION
47
- SELECT t6.組織コード, t6.会員ID FROM テーブル3 t6
48
- JOIN テーブル2 t2 ON t6.会員ID=t2.会員ID AND t2.アクションフラグ=0
49
- ) t1 WHERE ORG IN ('AA','SS','KK')
50
- GROUP BY 1;
51
- ```
52
-
53
- 修正テーブル名はそのままですねバージョン
54
- ```sql
55
- SELECT ORG, COUNT(DISTINCT T1.会員ID) FROM
56
- (SELECT ORG, 会員ID FROM
57
- (SELECT 会員ID, UNNEST(t4.ORGANIZATIONS) ORG
58
- FROM (SELECT t5.* FROM テーブル1 t5
59
- JOIN テーブル2 t2 ON t5.会員ID=t2.会員ID AND t2.アクションフラグ=0
60
- WHERE 住所 IN ('東京')
61
- ) t4
62
- ) t0 WHERE ORG IN ('AA','SS','KK')
63
- UNION
64
- SELECT ORGANIZATION, t6.会員ID FROM テーブル3 t6
65
- JOIN テーブル2 t2 ON t6.会員ID=t2.会員ID AND t2.アクションフラグ=0
66
- WHERE t6.ORGANIZATION='SS'
67
- ) t1
68
- GROUP BY 1;
69
- ```
70
-
71
- テーブル2の名前はご自身で変換をお願いします。また、変更に問題が有ればご指摘ください。
72
- ```sql
73
- SELECT ORG, COUNT(DISTINCT T1.会員ID) FROM
74
- (SELECT ORG, 会員ID FROM
75
- (SELECT 会員ID, UNNEST(t4.複数組織コード) ORG
76
- FROM (SELECT t5.* FROM ORGANIZATIONS t5
77
- JOIN テーブル2 t2 ON t5.会員ID=t2.会員ID AND t2.アクションフラグ=0
78
- WHERE 住所 IN ('東京')
79
- ) t4
80
- ) t0 WHERE ORG IN ('AA','SS','KK')
81
- UNION
82
- SELECT 組織コード, t6.会員ID FROM ORGANIZATION t6
83
- JOIN テーブル2 t2 ON t6.会員ID=t2.会員ID AND t2.アクションフラグ=0
84
- WHERE t6.組織コード='SS'
85
- ) t1
86
- GROUP BY 1;
87
- ```
88
-
89
-
90
- 前回のSQLでは時間が掛かると言われたので、unnestする前に条件で絞る様に変更したのですが、どのようなエラーが出ているか教えて頂けると有難いです。
91
- ```sql
92
- SELECT ORG, COUNT(DISTINCT T1.会員ID) FROM
93
- (SELECT ORG, 会員ID FROM
94
- (SELECT 会員ID, UNNEST(t4.組織コード) ORG
95
- FROM (SELECT t5.* FROM テーブル1 t5
96
- JOIN テーブル2 t2 ON t5.会員ID=t2.会員ID AND t2.アクションフラグ=0
97
- WHERE 住所 IN ('東京')
98
- ) t4
99
- ) t0 WHERE ORG IN ('AA','SS','KK')
100
- UNION
101
- SELECT 組織コード, t6.会員ID FROM テーブル3 t6
102
- JOIN テーブル2 t2 ON t6.会員ID=t2.会員ID AND t2.アクションフラグ=0
103
- WHERE 組織コード='SS'
104
- ) t1
105
- GROUP BY 1;
106
50
  ```

8

追加

2017/08/28 07:37

投稿

A.Ichi
A.Ichi

スコア4070

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

7

追加

2017/08/28 06:29

投稿

A.Ichi
A.Ichi

スコア4070

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

6

変更

2017/08/28 06:18

投稿

A.Ichi
A.Ichi

スコア4070

answer CHANGED
@@ -9,7 +9,7 @@
9
9
  ) t4
10
10
  ) t0
11
11
  UNION
12
- SELECT 組織コード, t6.会員ID FROM テーブル3 t6
12
+ SELECT t6.組織コード, t6.会員ID FROM テーブル3 t6
13
13
  JOIN テーブル2 t2 ON t6.会員ID=t2.会員ID AND t2.アクションフラグ=0
14
14
  ) t1 WHERE ORG IN ('AA','SS','KK')
15
15
  GROUP BY 1;

5

変更

2017/08/28 06:02

投稿

A.Ichi
A.Ichi

スコア4070

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

4

変更

2017/08/28 06:00

投稿

A.Ichi
A.Ichi

スコア4070

answer CHANGED
@@ -11,7 +11,7 @@
11
11
  UNION
12
12
  SELECT ORGANIZATION, t6.会員ID FROM テーブル3 t6
13
13
  JOIN テーブル2 t2 ON t6.会員ID=t2.会員ID AND t2.アクションフラグ=0
14
- WHERE ORGANIZATION='SS'
14
+ WHERE t6.ORGANIZATION='SS'
15
15
  ) t1
16
16
  GROUP BY 1;
17
17
  ```
@@ -29,7 +29,7 @@
29
29
  UNION
30
30
  SELECT 組織コード, t6.会員ID FROM ORGANIZATION t6
31
31
  JOIN テーブル2 t2 ON t6.会員ID=t2.会員ID AND t2.アクションフラグ=0
32
- WHERE 組織コード='SS'
32
+ WHERE t6.組織コード='SS'
33
33
  ) t1
34
34
  GROUP BY 1;
35
35
  ```

3

変更

2017/08/28 04:35

投稿

A.Ichi
A.Ichi

スコア4070

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

2

変更

2017/08/28 03:56

投稿

A.Ichi
A.Ichi

スコア4070

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

1

変更

2017/08/28 03:44

投稿

A.Ichi
A.Ichi

スコア4070

answer CHANGED
@@ -4,13 +4,13 @@
4
4
  (SELECT ORG, 会員ID FROM
5
5
  (SELECT 会員ID, UNNEST(t4.組織コード) ORG
6
6
  FROM (SELECT t5.* FROM テーブル1 t5
7
- JOIN テーブル2 t2 ON t5.会員ID=t2.会員ID AND t2.アクションフラグ=1
7
+ JOIN テーブル2 t2 ON t5.会員ID=t2.会員ID AND t2.アクションフラグ=0
8
8
  WHERE 住所 IN ('東京')
9
9
  ) t4
10
10
  ) t0 WHERE ORG IN ('AA','SS','KK')
11
11
  UNION
12
12
  SELECT 組織コード, t6.会員ID FROM テーブル3 t6
13
- JOIN テーブル2 t2 ON t6.会員ID=t2.会員ID AND t2.アクションフラグ=1
13
+ JOIN テーブル2 t2 ON t6.会員ID=t2.会員ID AND t2.アクションフラグ=0
14
14
  WHERE 組織コード='SS'
15
15
  ) t1
16
16
  GROUP BY 1;