質問編集履歴
1
失礼しました!質問内容を修正させていただきました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,44 +1,67 @@
|
|
1
1
|
SQL(bq)の処理について質問です。
|
2
|
-
以下のクエリであるjancodeの購入回数を
|
2
|
+
以下のクエリであるjancodeの購入回数を期間ごとに取得しています。
|
3
|
+
今回の例でいうと'2020/11'の場合の値がテーブルに無いので出力されないのですが
|
4
|
+
こちらを0として出力したいです
|
3
5
|
|
4
|
-
|
6
|
+
想定イメージ
|
7
|
+
period purchase_user trial_user repeat_user
|
8
|
+
2020/05 6 6 0
|
9
|
+
2020/08 6 6 0
|
10
|
+
2020/11 0 0 0
|
11
|
+
|
12
|
+
|
13
|
+
```ここに言語を入力
|
14
|
+
CREATE TABLE
|
15
|
+
[project_id].}[dataset_name].[table_name]
|
16
|
+
(
|
17
|
+
user_id STRING
|
18
|
+
, start_date DATE
|
19
|
+
, end_date DATE
|
20
|
+
, date DATE
|
21
|
+
, jancode STRING
|
22
|
+
)
|
23
|
+
;
|
24
|
+
|
25
|
+
INSERT INTO [project_id].}[dataset_name].[table_name]
|
26
|
+
VALUES('00','2022-05-01','2022-05-31','2020-05-02','12345678')
|
27
|
+
, ('01','2022-05-01','2022-05-31','2020-05-12','12345678')
|
28
|
+
, ('02','2022-05-01','2022-05-31','2020-05-13','12345678')
|
29
|
+
, ('03','2022-05-01','2022-05-31','2020-08-02','12345678')
|
30
|
+
, ('04','2022-05-01','2022-05-31','2020-08-02','12345678')
|
31
|
+
, ('05','2022-05-01','2022-05-31','2020-08-01','12345678')
|
32
|
+
, ('06','2022-05-01','2022-05-31','2020-09-04','12345678')
|
33
|
+
, ('07','2022-05-01','2022-05-31','2020-05-02','12345678')
|
34
|
+
, ('08','2022-05-01','2022-05-31','2020-09-02','12345678')
|
35
|
+
, ('09','2022-05-01','2022-05-31','2020-05-02','12345678')
|
36
|
+
, ('10','2022-05-01','2022-05-31','2020-09-02','12345678')
|
37
|
+
, ('11','2022-05-01','2022-05-31','2020-05-02','12345678')
|
38
|
+
;
|
39
|
+
|
5
|
-
WITH
|
40
|
+
WITH test AS (
|
6
41
|
SELECT
|
7
42
|
CASE WHEN date BETWEEN DATE_SUB(start_date, INTERVAL 24 MONTH) AND DATE_SUB(end_date, INTERVAL 22 MONTH) THEN '2020/05'
|
8
|
-
WHEN date BETWEEN DATE_SUB(start_date, INTERVAL 21 MONTH) AND DATE_SUB(end_date, INTERVAL 19 MONTH) THEN '2020/08'
|
43
|
+
WHEN date BETWEEN DATE_SUB(start_date, INTERVAL 21 MONTH) AND DATE_SUB(end_date, INTERVAL 19 MONTH) THEN '2020/08'
|
9
|
-
WHEN date BETWEEN DATE_SUB(start_date, INTERVAL 18 MONTH) AND DATE_SUB(end_date, INTERVAL 16 MONTH) THEN '2020/11'
|
44
|
+
WHEN date BETWEEN DATE_SUB(start_date, INTERVAL 18 MONTH) AND DATE_SUB(end_date, INTERVAL 16 MONTH) THEN '2020/11'
|
10
|
-
WHEN date BETWEEN DATE_SUB(start_date, INTERVAL 15 MONTH) AND DATE_SUB(end_date, INTERVAL 13 MONTH) THEN '2021/02'
|
11
|
-
WHEN date BETWEEN DATE_SUB(start_date, INTERVAL 12 MONTH) AND DATE_SUB(end_date, INTERVAL 10 MONTH) THEN '2021/05'
|
12
|
-
WHEN date BETWEEN DATE_SUB(start_date, INTERVAL 9 MONTH) AND DATE_SUB(end_date, INTERVAL 7 MONTH) THEN '2021/08'
|
13
|
-
WHEN date BETWEEN DATE_SUB(start_date, INTERVAL 6 MONTH) AND DATE_SUB(end_date, INTERVAL 4 MONTH) THEN '2021/11'
|
14
|
-
WHEN date BETWEEN DATE_SUB(start_date, INTERVAL 3 MONTH) AND DATE_SUB(end_date, INTERVAL 1 MONTH) THEN '2022/02'
|
15
|
-
WHEN date BETWEEN start_date AND end_date THEN '2022/05'
|
16
|
-
END AS period
|
45
|
+
END AS period
|
17
|
-
,
|
46
|
+
, user_id
|
18
47
|
, COUNT(DISTINCT date) AS frequency
|
19
|
-
FROM
|
48
|
+
FROM
|
20
|
-
pos_table
|
49
|
+
[project_id].}[dataset_name].[table_name]
|
21
50
|
WHERE
|
22
|
-
jancode = '
|
51
|
+
jancode = '12345678'
|
52
|
+
GROUP BY
|
53
|
+
user_id
|
54
|
+
, period
|
23
55
|
)
|
24
|
-
SELECT
|
56
|
+
SELECT
|
25
|
-
member_type
|
26
|
-
|
57
|
+
period
|
27
58
|
, COUNT(DISTINCT user_id) AS purchase_user
|
28
59
|
, COUNT(DISTINCT IF(frequency = 1, user_id,NULL)) AS traial_user
|
29
|
-
, COUNT(DISTINCT IF(frequency >1, user_id,NULL)) AS repeat_user
|
60
|
+
, COUNT(DISTINCT IF(frequency > 1, user_id,NULL)) AS repeat_user
|
30
61
|
FROM
|
31
|
-
|
62
|
+
test
|
32
63
|
GROUP BY
|
33
64
|
period
|
34
65
|
ORDER BY
|
35
66
|
period
|
36
|
-
|
37
|
-
|
38
|
-
|
67
|
+
```
|
39
|
-
|
40
|
-
period purchase_user trial_user repeat_user
|
41
|
-
2020/05 n n n
|
42
|
-
2020/08 0 0 0
|
43
|
-
2020/11 n n n
|
44
|
-
〜〜〜〜〜〜〜
|