回答編集履歴
9
変更
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
追加
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
追加
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
変更
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
変更
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
変更
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
変更
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
変更
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
変更
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.アクションフラグ=
|
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.アクションフラグ=
|
13
|
+
JOIN テーブル2 t2 ON t6.会員ID=t2.会員ID AND t2.アクションフラグ=0
|
14
14
|
WHERE 組織コード='SS'
|
15
15
|
) t1
|
16
16
|
GROUP BY 1;
|