ahmedrahil786

Socar Funnel - Installs to MFT - For Shan Yi - Rahil

Oct 2nd, 2019
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.01 KB | None | 0 0
  1. set @start := '2018-12-31 00:00';
  2.  
  3. select
  4. A.Week,
  5. IFNULL(G.Active_installs_2019,0) as installs,
  6. A.signups,
  7. B.DocUploaded,
  8. B.DocApproved,
  9. F.cardupload as payment_approved,
  10. D.TotalMFTs,
  11. C.ActiveMembers,
  12. C.Bookings as rentals,
  13. C.ridelength,
  14. CAST((B.DocUploaded/A.signups)*100 AS DECIMAL(18,2)) as singup_to_doc_Uploaded_pct,
  15. CAST((B.DocApproved/A.signups)*100 AS DECIMAL(18,2)) as signup_to_doc_approved_pct,
  16. CAST((D.TotalMFTs/A.signups)*100 AS DECIMAL(18,2)) as Signup_to_MFT_pct
  17.  
  18. from (select
  19. WEEKOFYEAR(m.created_at + interval '8' hour) as Week,
  20. count(distinct m.id) as signups
  21. from members m
  22. left outer join reservations r on r.member_id = m.id
  23. where m.created_at + interval '8' hour >= @start
  24. and m.imaginary = 'normal'
  25. group by 1 ) A
  26.  
  27. left join (select
  28. WEEKOFYEAR(dl.created_at + interval '8' hour) as Week,
  29. count(distinct case when dl.state not in ('noInput','null') then dl.member_id end) DocUploaded,
  30. count(distinct case when dl.state = 'approved' then dl.member_id end) DocApproved,
  31. count(distinct case when dl.state = 'reject' then dl.member_id end) DocRejected,
  32. count(distinct case when dl.gender = 'man' then dl.member_id end) MaleApproved,
  33. count(distinct case when dl.gender = 'woman' then dl.member_id end) FemaleApproved
  34. from driver_licenses dl
  35. join members m
  36. on m.id = dl.member_id
  37. where dl.created_at + interval '8' hour >= @start
  38. and m.imaginary = 'normal'
  39. group by 1) B
  40. on B.Week = A.Week
  41.  
  42. left join (select
  43. WEEKOFYEAR(r.occupy_start_at + interval '8' hour) as Week,
  44. count(distinct case when r.state = 'completed' then r.member_id end) as ActiveMembers,
  45. count(distinct case when r.state = 'completed' then r.id end) as Bookings,
  46. sum(timestampdiff(minute,CONVERT_TZ(r.start_at, '+00:00', '+8:00'), CONVERT_TZ(r.end_at, '+00:00', '+8:00'))/60) as ridelength,
  47. sum(G.amount) as Charges
  48. from reservations r
  49. left outer join (select
  50. ch.reservation_id as rid,
  51. sum(ch.amount) as amount
  52. from payments ch
  53. group by 1
  54.  
  55. ) G on G.rid = r.id
  56. join members m
  57. on m.id = r.member_id
  58. where r.start_at + interval '8' hour >= @start
  59. and m.imaginary in ('normal')
  60. and r.state = 'completed'
  61. group by 1) C on
  62. C.Week = B.Week
  63.  
  64. left join (
  65. select
  66. WEEKOFYEAR(c.created_at + interval '8' hour) as Week,
  67. count(distinct case when c.kind = 'subscriptionFee' then c.member_id end) as TotalMFTs
  68. from charges c
  69. join members m
  70. on m.id = c.member_id
  71. where c.created_at + interval '8' hour >= @start
  72. and m.imaginary = 'normal'
  73. group by 1) D on
  74. D.Week = C.Week
  75.  
  76. left join (
  77. select
  78. weekofyear(pm.created_at + interval '8' hour) as week,
  79. count(distinct pm.member_id) as cardupload
  80. from
  81. payment_methods as pm
  82. where pm.state = 'approved'
  83. and pm.created_at + interval '8' hour >= @start
  84. group by 1) F
  85. on F.week = A.week
  86.  
  87. left join (
  88. select
  89. weekofyear(d.updated_at + interval '8' hour) as week,
  90. count(distinct case when d.state = 'active' then d.id end) as Active_installs_2019
  91. from devices d
  92. where d.created_at + interval '8' hour >= @start
  93. group by 1 ) G
  94. on G.week = A.week
  95.  
  96. group by 1
  97. order by 1 desc;
Advertisement
Add Comment
Please, Sign In to add comment