先月(9月)にthanksページを見た人が、
9月中に美容カテゴリページを見た人か見てない人かの内訳を出したいです。
同一ユーザーが、同月に複数回thanksページを閲覧した場合
美容カテゴリを閲覧する日もあれば
異なるカテゴリを閲覧する日もあるでしょう。
混在していた場合は、どういった内訳になるのでしょうか。
「カテゴリ見たUU」 は 1 でカウントすると想像できますけど
「カテゴリ見てないUU」 は 1 にするのか、それとも 0 とするのか
以下は混在する場合に「見てないUU」を 0 とする例です。
(BigQuery 標準SQL
)
SQL
1CREATE TEMP TABLE log
2(
3 time datetime not null
4 , user_id int64 not null
5 , path string not null
6 , category string not null
7);
8
9INSERT INTO log
10 ( time, user_id, path, category )
11VALUES
12 ( '2021-09-20 10:05:11', 1, '/thanks', 'biyou' )
13 , ( '2021-09-20 10:05:14', 2, '/thanks', 'kaden' )
14 , ( '2021-09-24 14:48:19', 1, '/thanks', 'fashion' )
15 , ( '2021-09-26 20:01:13', 1, '/thanks', 'kaden' )
16 , ( '2021-09-26 21:41:09', 3, '/thanks', 'food' )
17 , ( '2021-09-04 07:22:48', 4, '/question', 'biyou' )
18 , ( '2021-09-26 21:02:11', 5, '/thanks', 'biyou' )
19 , ( '2021-09-30 23:59:59', 5, '/thanks', 'biyou' )
20 , ( '2021-10-01 00:01:03', 6, '/thanks', 'biyou' )
21;
22
23SELECT min( ym ) ym
24 , count(1) uu
25 , sum( biyou ) biyou
26 , sum( etc ) etc
27FROM
28(
29 SELECT min( datetime_trunc( time, month ) ) ym
30 , user_id
31 , count( distinct case when category = 'biyou' then 1 end ) biyou
32 , 1 - max( case when category = 'biyou' then 1 else 0 end ) etc
33 FROM log
34 WHERE path = '/thanks'
35 AND time >= datetime_trunc( current_datetime() - interval 1 month, month )
36 AND time < datetime_trunc( current_datetime(), month )
37 GROUP BY user_id
38) q;
result
1 ym uu biyou etc
2------------------------------------
32021-09-01 4 2 2
4
5
6(インラインビュー)
7
8 ym user_id biyou etc
9--------------------------------------
102021-09-01 1 1 0
112021-09-01 2 0 1
122021-09-01 3 0 1
132021-09-01 5 1 0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。