回答編集履歴

13

推敲

2018/03/23 08:23

投稿

sazi
sazi

スコア25184

test CHANGED
@@ -58,7 +58,7 @@
58
58
 
59
59
  , point_agg as (--ポイント履歴属性集計
60
60
 
61
- select shisaku_flg, demogra_flg, count(distinct kihon_id) as patarn_count
61
+ select shisaku_flg, demogra_flg, count(distinct kihon_id) as pattern_count
62
62
 
63
63
  from point_attribute
64
64
 
@@ -70,7 +70,7 @@
70
70
 
71
71
  -- パターン別集計表(組合せ表とポイント履歴属性集計を結合し件数を取得)
72
72
 
73
- select ptn.*, coalesce(pntagg.patarn_count,0)
73
+ select ptn.*, coalesce(pntagg.pattern_count,0)
74
74
 
75
75
  from pattern ptn left join point_agg pntagg
76
76
 

12

修正

2018/03/23 08:23

投稿

sazi
sazi

スコア25184

test CHANGED
@@ -92,8 +92,6 @@
92
92
 
93
93
  --
94
94
 
95
- 「キャンペーン期間:1/26~2/9」を条件に含めると
95
+ 「キャンペーン期間:1/26~2/9」を条件に含めると、求めたい結果と異なるので含めていません。
96
-
97
- 求めたい結果と異なるので、含めていません。
98
96
 
99
97
  必要なら、point_attribute内で条件を直接追加すれば確認できます。

11

修正

2018/03/22 10:41

投稿

sazi
sazi

スコア25184

test CHANGED
@@ -68,7 +68,7 @@
68
68
 
69
69
  )
70
70
 
71
- -- パターン別集計表(組合せ表とポイント属性履歴を結合し件数を取得)
71
+ -- パターン別集計表(組合せ表とポイント履歴属性集計を結合し件数を取得)
72
72
 
73
73
  select ptn.*, coalesce(pntagg.patarn_count,0)
74
74
 

10

追記

2018/03/22 10:40

投稿

sazi
sazi

スコア25184

test CHANGED
@@ -12,13 +12,13 @@
12
12
 
13
13
  with
14
14
 
15
- param as (
15
+ param as (-- パラメータ
16
16
 
17
17
  select '2018-02-07':: date apply_date_limit ,'2018-01-26':: date campaign_Start,'2018-02-09':: date campaign_End
18
18
 
19
19
  )
20
20
 
21
- , pattern as (
21
+ , pattern as (--組合せ表
22
22
 
23
23
  select shisaku_flg, demogra_flg1 || demogra_flg2 as demogra_flg
24
24
 
@@ -30,7 +30,7 @@
30
30
 
31
31
  )
32
32
 
33
- , point_attribute as (
33
+ , point_attribute as (--ポイント履歴属性追加
34
34
 
35
35
  select kihon_id
36
36
 
@@ -56,7 +56,7 @@
56
56
 
57
57
  )
58
58
 
59
- , point_agg as (
59
+ , point_agg as (--ポイント履歴属性集計
60
60
 
61
61
  select shisaku_flg, demogra_flg, count(distinct kihon_id) as patarn_count
62
62
 
@@ -67,6 +67,8 @@
67
67
  order by shisaku_flg, demogra_flg
68
68
 
69
69
  )
70
+
71
+ -- パターン別集計表(組合せ表とポイント属性履歴を結合し件数を取得)
70
72
 
71
73
  select ptn.*, coalesce(pntagg.patarn_count,0)
72
74
 

9

修正

2018/03/22 08:42

投稿

sazi
sazi

スコア25184

test CHANGED
@@ -12,7 +12,13 @@
12
12
 
13
13
  with
14
14
 
15
+ param as (
16
+
17
+ select '2018-02-07':: date apply_date_limit ,'2018-01-26':: date campaign_Start,'2018-02-09':: date campaign_End
18
+
19
+ )
20
+
15
- pattern as (
21
+ , pattern as (
16
22
 
17
23
  select shisaku_flg, demogra_flg1 || demogra_flg2 as demogra_flg
18
24
 
@@ -30,7 +36,7 @@
30
36
 
31
37
  , case when exists(
32
38
 
33
- select 1 from campaign where kihon_id=pnt.kihon_id and apply_date=pnt.p_date
39
+ select 1 from campaign where apply_date < param.apply_date_limit and kihon_id=pnt.kihon_id and apply_date=pnt.p_date
34
40
 
35
41
  )
36
42
 
@@ -40,13 +46,13 @@
40
46
 
41
47
  case when old between 20 and 34 then '1'
42
48
 
43
- when old between 35 and 49 then '2'
49
+ when old between 35 and 49 then '2'
44
50
 
45
- when old >= 50 then '3'
51
+ when old >= 50 then '3'
46
52
 
47
53
  end as demogra_flg
48
54
 
49
- from point_rireki2 pnt
55
+ from param cross join point_rireki2 pnt
50
56
 
51
57
  )
52
58
 
@@ -70,7 +76,7 @@
70
76
 
71
77
  and ptn.demogra_flg=pntagg.demogra_flg
72
78
 
73
- order by shisaku_flg,demogra_flg
79
+ order by shisaku_flg, demogra_flg
74
80
 
75
81
  ;
76
82
 
@@ -84,7 +90,7 @@
84
90
 
85
91
  --
86
92
 
87
- 特定応募日(2/6)以前までの期間における」や「キャンペーン期間:1/26~2/9」を条件に含めると
93
+ 「キャンペーン期間:1/26~2/9」を条件に含めると
88
94
 
89
95
  求めたい結果と異なるので、含めていません。
90
96
 

8

追記

2018/03/22 08:09

投稿

sazi
sazi

スコア25184

test CHANGED
@@ -87,3 +87,5 @@
87
87
  「特定応募日(2/6)以前までの期間における」や「キャンペーン期間:1/26~2/9」を条件に含めると
88
88
 
89
89
  求めたい結果と異なるので、含めていません。
90
+
91
+ 必要なら、point_attribute内で条件を直接追加すれば確認できます。

7

追記

2018/03/22 07:36

投稿

sazi
sazi

スコア25184

test CHANGED
@@ -77,3 +77,13 @@
77
77
  ```
78
78
 
79
79
  ※テストデータではgenderに定義に無い'3'がありますけど、それは組合せ表により除外されています。
80
+
81
+
82
+
83
+ 追記
84
+
85
+ --
86
+
87
+ 「特定応募日(2/6)以前までの期間における」や「キャンペーン期間:1/26~2/9」を条件に含めると
88
+
89
+ 求めたい結果と異なるので、含めていません。

6

推敲

2018/03/22 07:32

投稿

sazi
sazi

スコア25184

test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  with
14
14
 
15
- patarn as (
15
+ pattern as (
16
16
 
17
17
  select shisaku_flg, demogra_flg1 || demogra_flg2 as demogra_flg
18
18
 
@@ -64,7 +64,7 @@
64
64
 
65
65
  select ptn.*, coalesce(pntagg.patarn_count,0)
66
66
 
67
- from patarn ptn left join point_agg pntagg
67
+ from pattern ptn left join point_agg pntagg
68
68
 
69
69
  on ptn.shisaku_flg=pntagg.shisaku_flg
70
70
 

5

修正

2018/03/22 05:33

投稿

sazi
sazi

スコア25184

test CHANGED
@@ -24,7 +24,7 @@
24
24
 
25
25
  )
26
26
 
27
- , point_edit as (
27
+ , point_attribute as (
28
28
 
29
29
  select kihon_id
30
30
 
@@ -54,7 +54,7 @@
54
54
 
55
55
  select shisaku_flg, demogra_flg, count(distinct kihon_id) as patarn_count
56
56
 
57
- from point_edit
57
+ from point_attribute
58
58
 
59
59
  group by shisaku_flg, demogra_flg
60
60
 

4

修正

2018/03/22 05:31

投稿

sazi
sazi

スコア25184

test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  with
14
14
 
15
- pattern as (
15
+ patarn as (
16
16
 
17
17
  select shisaku_flg, demogra_flg1 || demogra_flg2 as demogra_flg
18
18
 
@@ -24,35 +24,37 @@
24
24
 
25
25
  )
26
26
 
27
+ , point_edit as (
28
+
29
+ select kihon_id
30
+
31
+ , case when exists(
32
+
33
+ select 1 from campaign where kihon_id=pnt.kihon_id and apply_date=pnt.p_date
34
+
35
+ )
36
+
37
+ then 'キャンペーンあり' else 'キャンペーンなし' end as shisaku_flg
38
+
39
+ , case gender when 1 then 'M' when 2 then 'F' end ||
40
+
41
+ case when old between 20 and 34 then '1'
42
+
43
+ when old between 35 and 49 then '2'
44
+
45
+ when old >= 50 then '3'
46
+
47
+ end as demogra_flg
48
+
49
+ from point_rireki2 pnt
50
+
51
+ )
52
+
27
53
  , point_agg as (
28
54
 
29
55
  select shisaku_flg, demogra_flg, count(distinct kihon_id) as patarn_count
30
56
 
31
- from (
32
-
33
- select *
34
-
35
- , case when exists(
36
-
37
- select 1 from campaign where kihon_id=pnt.kihon_id and apply_date=pnt.p_date
38
-
39
- )
40
-
41
- then 'キャンペーンあり' else 'キャンペーンなし' end as shisaku_flg
42
-
43
- , case gender when 1 then 'M' when 2 then 'F' end ||
44
-
45
- case when old between 20 and 34 then '1'
46
-
47
- when old between 35 and 49 then '2'
48
-
49
- when old >= 50 then '3'
50
-
51
- end as demogra_flg
52
-
53
- from point_rireki2 pnt
57
+ from point_edit
54
-
55
- ) step1
56
58
 
57
59
  group by shisaku_flg, demogra_flg
58
60
 
@@ -62,13 +64,13 @@
62
64
 
63
65
  select ptn.*, coalesce(pntagg.patarn_count,0)
64
66
 
65
- from pattern ptn left join point_agg pntagg
67
+ from patarn ptn left join point_agg pntagg
66
68
 
67
69
  on ptn.shisaku_flg=pntagg.shisaku_flg
68
70
 
69
71
  and ptn.demogra_flg=pntagg.demogra_flg
70
72
 
71
- order by shisaku_flg,demogra_flg]
73
+ order by shisaku_flg,demogra_flg
72
74
 
73
75
  ;
74
76
 

3

推敲

2018/03/22 05:29

投稿

sazi
sazi

スコア25184

test CHANGED
@@ -1,6 +1,6 @@
1
1
  先ず【検討中のフラグの仮案】ですが、case文中で完結しているので、相関問い合わせとなっていません。
2
2
 
3
- 次に、求める結果では0件も表示するのですから、ポイント履歴に求めても無いものは抽出されませんから、基準となるものが必要です。
3
+ 次に、求める結果では0件も表示するのですから、ポイント履歴に求めても無いものは抽出されませんので、基準となるものが必要です。
4
4
 
5
5
 
6
6
 

2

推敲

2018/03/22 05:20

投稿

sazi
sazi

スコア25184

test CHANGED
@@ -74,4 +74,4 @@
74
74
 
75
75
  ```
76
76
 
77
- ※テストデータではgenderに定義に無い'3'がありますけど、それは除外組合せ表により除外されています。
77
+ ※テストデータではgenderに定義に無い'3'がありますけど、それは組合せ表により除外されています。

1

追記

2018/03/22 05:20

投稿

sazi
sazi

スコア25184

test CHANGED
@@ -1,8 +1,6 @@
1
1
  先ず【検討中のフラグの仮案】ですが、case文中で完結しているので、相関問い合わせとなっていません。
2
2
 
3
- 次に、求める結果では0件も表示するのですから、ポイント履歴に求めても無いものは抽出されませんから、
3
+ 次に、求める結果では0件も表示するのですから、ポイント履歴に求めても無いものは抽出されませんから、基準となるものが必要です。
4
-
5
- 基準となるものが必要です。
6
4
 
7
5
 
8
6
 
@@ -75,3 +73,5 @@
75
73
  ;
76
74
 
77
75
  ```
76
+
77
+ ※テストデータではgenderに定義に無い'3'がありますけど、それは除外組合せ表により除外されています。