回答編集履歴
10
修正
test
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
|
3
3
|
case文中はgenderとoldの判断は独立しているので、分けてシンプルになるようにしています。
|
4
4
|
|
5
|
+
また、paramを駆動表として結合するように変更しています。
|
6
|
+
|
5
7
|
※前回の質問では流れからサブクエリーでしたので、混乱するかと思い敢えて提示はしていませんでした。
|
6
|
-
|
7
|
-
※paramを駆動表として結合するように変更しています。
|
8
8
|
|
9
9
|
```SQL
|
10
10
|
|
9
修正
test
CHANGED
@@ -3,6 +3,8 @@
|
|
3
3
|
case文中はgenderとoldの判断は独立しているので、分けてシンプルになるようにしています。
|
4
4
|
|
5
5
|
※前回の質問では流れからサブクエリーでしたので、混乱するかと思い敢えて提示はしていませんでした。
|
6
|
+
|
7
|
+
※paramを駆動表として結合するように変更しています。
|
6
8
|
|
7
9
|
```SQL
|
8
10
|
|
@@ -36,13 +38,13 @@
|
|
36
38
|
|
37
39
|
end as demogra_flg
|
38
40
|
|
41
|
+
from param left join campaign cmpgn
|
42
|
+
|
43
|
+
on cmpgn.apply_date < param.apply_date_limit
|
44
|
+
|
39
|
-
|
45
|
+
left join point_rireki2 pnt
|
40
46
|
|
41
47
|
on cmpgn.kihon_id=pnt.kihon_id
|
42
|
-
|
43
|
-
cross join param
|
44
|
-
|
45
|
-
where cmpgn.apply_date < param.apply_date_limit
|
46
48
|
|
47
49
|
) step1
|
48
50
|
|
8
修正
test
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
サブクエリーを使わずに先に全体表を構成してから、集計する方が記述はシンプルになります。
|
2
2
|
|
3
|
-
case文中は
|
3
|
+
case文中はgenderとoldの判断は独立しているので、分けてシンプルになるようにしています。
|
4
4
|
|
5
5
|
※前回の質問では流れからサブクエリーでしたので、混乱するかと思い敢えて提示はしていませんでした。
|
6
6
|
|
7
修正
test
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
|
9
9
|
with param as (
|
10
10
|
|
11
|
-
select '2018-02-07':: date
|
11
|
+
select '2018-02-07':: date apply_date_limit ,'2018-01-26':: date campaign_Start,'2018-02-09':: date campaign_End
|
12
12
|
|
13
13
|
)
|
14
14
|
|
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
select cmpgn.shisaku_id, cmpgn.shisaku_name, cmpgn.kihon_id
|
20
20
|
|
21
|
-
, case when
|
21
|
+
, case when p_date between param.campaign_Start and param.campaign_End
|
22
22
|
|
23
23
|
and (fuyo_pt_tj is not null or kan_pt_tj is not null or kan_pt_kg is not null)
|
24
24
|
|
@@ -26,7 +26,7 @@
|
|
26
26
|
|
27
27
|
end as shohi_flg
|
28
28
|
|
29
|
-
, case
|
29
|
+
, case gender when 1 then 'M' when 2 then 'F' end ||
|
30
30
|
|
31
31
|
case when old between 20 and 34 then '1'
|
32
32
|
|
6
追記
test
CHANGED
@@ -12,11 +12,11 @@
|
|
12
12
|
|
13
13
|
)
|
14
14
|
|
15
|
-
select shisaku_id, shisaku_name, shohi_flg,demogra_flg, count(
|
15
|
+
select shisaku_id, shisaku_name, shohi_flg,demogra_flg, count(distinct kihon_id) as patarn_count
|
16
16
|
|
17
17
|
from (
|
18
18
|
|
19
|
-
select
|
19
|
+
select cmpgn.shisaku_id, cmpgn.shisaku_name, cmpgn.kihon_id
|
20
20
|
|
21
21
|
, case when "date" between param.campaign_Start and param.campaign_End
|
22
22
|
|
@@ -68,4 +68,6 @@
|
|
68
68
|
|
69
69
|
敢えて履歴で行うとしても、ユーザーIDでグルーピングしたものの件数で無いと駄目な気が。
|
70
70
|
|
71
|
+
取り敢えずは、重複なしのユーザーIDでカウントするようにしました。
|
72
|
+
|
71
73
|
※仕様について考えるのは、また長くなりそうで、本意ではありませんが・・・
|
5
追記
test
CHANGED
@@ -67,3 +67,5 @@
|
|
67
67
|
普通に考えるとユーザーマスタからの件数になるかと思われます。
|
68
68
|
|
69
69
|
敢えて履歴で行うとしても、ユーザーIDでグルーピングしたものの件数で無いと駄目な気が。
|
70
|
+
|
71
|
+
※仕様について考えるのは、また長くなりそうで、本意ではありませんが・・・
|
4
追記
test
CHANGED
@@ -63,3 +63,7 @@
|
|
63
63
|
よく考えたら、キャンペーンに応募した人の性別や年代での分布ということだから、ポイント履歴での件数じゃ、不味いんじゃないでしょうか。
|
64
64
|
|
65
65
|
年齢とかも履歴上で誕生日過ぎたら変わってるとかあるでしょうし。
|
66
|
+
|
67
|
+
普通に考えるとユーザーマスタからの件数になるかと思われます。
|
68
|
+
|
69
|
+
敢えて履歴で行うとしても、ユーザーIDでグルーピングしたものの件数で無いと駄目な気が。
|
3
追記
test
CHANGED
@@ -53,3 +53,13 @@
|
|
53
53
|
```
|
54
54
|
|
55
55
|
尚、データ状況によってはサブクエリーの方が高速な場合もあります。
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
追記
|
60
|
+
|
61
|
+
---
|
62
|
+
|
63
|
+
よく考えたら、キャンペーンに応募した人の性別や年代での分布ということだから、ポイント履歴での件数じゃ、不味いんじゃないでしょうか。
|
64
|
+
|
65
|
+
年齢とかも履歴上で誕生日過ぎたら変わってるとかあるでしょうし。
|
2
修正
test
CHANGED
@@ -48,7 +48,7 @@
|
|
48
48
|
|
49
49
|
group by shisaku_id, shisaku_name,shohi_flg,demogra_flg
|
50
50
|
|
51
|
-
order by shisaku_id,shohi_flg
|
51
|
+
order by shisaku_id,shohi_flg,demogra_flg
|
52
52
|
|
53
53
|
```
|
54
54
|
|
1
修正
test
CHANGED
@@ -42,7 +42,7 @@
|
|
42
42
|
|
43
43
|
cross join param
|
44
44
|
|
45
|
-
where cmpgn.apply_date < param.
|
45
|
+
where cmpgn.apply_date < param.apply_date_limit
|
46
46
|
|
47
47
|
) step1
|
48
48
|
|