回答編集履歴
5
誤字訂正
answer
CHANGED
@@ -20,11 +20,11 @@
|
|
20
20
|
( そうでないと、Yes, No 判定にはなりません )
|
21
21
|
|
22
22
|
3. ご希望の結果セットに```配信月```という年月の項目がありますけど
|
23
|
-
このでグループ化するのは適切ではないでしょう。
|
23
|
+
この演算フィールドでグループ化するのは適切ではないでしょう。
|
24
24
|
配信が漏れてたりなどの事情で
|
25
25
|
配信期間が月を跨いだりすると```メール名```を基準とした集計にはなりません。
|
26
26
|
そのため、月間表示をご希望の場合は、私が記述した```SQL```で申し上げると
|
27
|
-
SELECT句で```format( min(delivery ), 'yyyy-MM' )```
|
27
|
+
SELECT句で```format( min( delivery ), 'yyyy-MM' )```
|
28
28
|
とすればいいでしょう。
|
29
29
|
|
30
30
|
以上のことを考慮に入れて```SQL```を書いてみました。
|
4
表内における日付のデリミタを訂正
answer
CHANGED
@@ -78,4 +78,4 @@
|
|
78
78
|
| メール名 | 初回配信日 | 最終配信日 | 配信数 | 購入数 |
|
79
79
|
|:--------:|:----------:|:----------:|:------:|:------:|
|
80
80
|
| MailA | 2021-01-01 | 2021-01-11 | 3 | 1 |
|
81
|
-
| MailB | 2021
|
81
|
+
| MailB | 2021-01-06 | 2021-01-12 | 2 | 1 |
|
3
文言修正
answer
CHANGED
@@ -5,8 +5,8 @@
|
|
5
5
|
配信日フィールド、購入日フィールドとも、値が```日付```になっていますけど
|
6
6
|
実際のテーブルに登録されている値は
|
7
7
|
日付だけでなく、時刻まで記録された```タイムスタンプ```になっているでしょうか。
|
8
|
-
|
8
|
+
通常、何らかのイベントやトリガーをトレースする単位は
|
9
|
-
|
9
|
+
「日」ではなく「日時」であることが多いと思います。
|
10
10
|
|
11
11
|
1. SQL文を拝見する限り、把握なさってはいるでしょうけど「 ```購入``` 」に該当するかは、
|
12
12
|
**メールを配信してから、次回配信日までの間** とする必要があるでしょう。
|
@@ -17,12 +17,15 @@
|
|
17
17
|
|
18
18
|
2. 次回までの配信日に```複数回購入```していただいた場合でも
|
19
19
|
購入者に対する集計は、配信直後だけの```1回きり```とする必要があるでしょう。
|
20
|
-
( Yes, No 判定な
|
20
|
+
( そうでないと、Yes, No 判定にはなりません )
|
21
21
|
|
22
22
|
3. ご希望の結果セットに```配信月```という年月の項目がありますけど
|
23
|
-
この
|
23
|
+
このでグループ化するのは適切ではないでしょう。
|
24
|
-
|
24
|
+
配信が漏れてたりなどの事情で
|
25
25
|
配信期間が月を跨いだりすると```メール名```を基準とした集計にはなりません。
|
26
|
+
そのため、月間表示をご希望の場合は、私が記述した```SQL```で申し上げると
|
27
|
+
SELECT句で```format( min(delivery ), 'yyyy-MM' )```
|
28
|
+
とすればいいでしょう。
|
26
29
|
|
27
30
|
以上のことを考慮に入れて```SQL```を書いてみました。
|
28
31
|
※ 他に抜けがあるかもしれないですけど、とりあえず掲載します
|
2
文章でおかしな箇所を修正
answer
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
ご希望の結果は理解できましたけど
|
2
|
-
集計に対する前提条件やご考慮は
|
2
|
+
集計に対する前提条件やご考慮は少し不足しているように思います。
|
3
3
|
|
4
4
|
0. ご提示のサンプルデータでは
|
5
5
|
配信日フィールド、購入日フィールドとも、値が```日付```になっていますけど
|
@@ -8,7 +8,7 @@
|
|
8
8
|
両フィールドにおける```差分```の単位は、日付ではなく```時間```であるため
|
9
9
|
どちらかのデータ型が Date型 だったりすると設計ミスに該当します。
|
10
10
|
|
11
|
-
1. 「 ```購入``` 」に該当するかは、
|
11
|
+
1. SQL文を拝見する限り、把握なさってはいるでしょうけど「 ```購入``` 」に該当するかは、
|
12
12
|
**メールを配信してから、次回配信日までの間** とする必要があるでしょう。
|
13
13
|
上限を決めないと、配信後1年経過した人が```該当者```になってしまう
|
14
14
|
なんて可能性がありますし
|
1
ブザービート購入を有効化
answer
CHANGED
@@ -50,9 +50,9 @@
|
|
50
50
|
, count( distinct it.購入者名 )
|
51
51
|
FROM ot
|
52
52
|
LEFT JOIN 購入履歴データテーブル it
|
53
|
-
ON ot.target =
|
53
|
+
ON ot.target = it.購入者名
|
54
|
-
AND ot.delivery <
|
54
|
+
AND ot.delivery < it.購入日
|
55
|
-
AND ot.expiration > it.購入日
|
55
|
+
AND ot.expiration >= it.購入日
|
56
56
|
GROUP BY ot.mail
|
57
57
|
, ot.target
|
58
58
|
, ot.delivery
|