Advertisement
asaru9

cohort

Nov 23rd, 2022 (edited)
1,149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. with reg as (
  2.     select userid, date(eventtime) as reg_dt
  3.     from "public"."table1"
  4.     where eventname = 'registration'
  5. ),
  6. visits as (
  7.     select reg_dt, date(t1.eventtime) as visit_dt, count(distinct t1.userid) as visit_cnt
  8.     from "public"."table1" t1
  9.     join reg
  10.     on t1.userid = reg.userid and date(t1.eventtime) > reg.reg_dt
  11.     where eventname = 'visit'
  12.     group by reg_dt, date(t1.eventtime)
  13. ),
  14. dd as (
  15. select
  16.   '2022-01-10'::DATE + SEQUENCE.number as dt
  17. from
  18.   GENERATE_SERIES(0, 333) as SEQUENCE (number)  
  19. )
  20. select r.reg_dt, dd.dt as visit_dt, r.reg_cnt, coalesce(v.visit_cnt, 0) as visit_cnt,
  21.        1.0*coalesce(v.visit_cnt, 0)/r.reg_cnt as share
  22. from
  23.     (
  24.        select reg_dt, count(distinct userid) as reg_cnt
  25.        from reg
  26.        group by reg_dt
  27.     ) r
  28.    
  29. join dd
  30. on dd.dt > r.reg_dt  
  31.  
  32. left join visits v
  33. on r.reg_dt = v.reg_dt and dd.dt = v.visit_dt
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement