Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- with day
- AS (SELECT
- user_id,
- DATE_TRUNC('day', datetime) AS active_day
- FROM events
- GROUP BY 1, 2),
- with_first_day
- AS (SELECT
- user_id,
- active_day,
- FIRST_VALUE(active_day) OVER (PARTITION BY user_id ORDER BY active_day) AS first_day
- FROM day),
- with_day_number
- AS (SELECT
- user_id,
- active_day,
- first_day,
- (active_day - first_day) / (24 * 60 * 60) AS day_number
- FROM with_first_day)
- SELECT
- TIME_FORMAT(first_day, 'yyyy-MM-dd') AS first_day,
- SUM(CASE WHEN day_number = 0 THEN 1 ELSE 0 END) AS day_0,
- SUM(CASE WHEN day_number = 1 THEN 1 ELSE 0 END)/day_0 AS day_1,
- SUM(CASE WHEN day_number = 2 THEN 1 ELSE 0 END)/day_0 AS day_2,
- SUM(CASE WHEN day_number = 3 THEN 1 ELSE 0 END)/day_0 AS day_3,
- SUM(CASE WHEN day_number = 4 THEN 1 ELSE 0 END)/day_0 AS day_4,
- SUM(CASE WHEN day_number = 5 THEN 1 ELSE 0 END)/day_0 AS day_5,
- SUM(CASE WHEN day_number = 6 THEN 1 ELSE 0 END)/day_0 AS day_6,
- SUM(CASE WHEN day_number = 7 THEN 1 ELSE 0 END)/day_0 AS day_7
- FROM with_day_number
- GROUP BY 1
- ORDER BY 1
Add Comment
Please, Sign In to add comment