ahmedrahil786

Query for jason - Customers loosing at each stage

May 15th, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.27 KB | None | 0 0
  1. set @start := '2018-12-31 00:00';
  2.  
  3. select
  4. A.Week,
  5. A.signups,
  6. B.DocUploaded,
  7. B.DocApproved,
  8. D.TotalMFTs,
  9. C.ActiveMembers,
  10. C.Bookings as rentals,
  11. C.ridelength,
  12. CAST((B.DocUploaded/A.signups)*100 AS DECIMAL(18,2)) as singup_to_doc_Uploaded_pct,
  13. CAST((B.DocApproved/A.signups)*100 AS DECIMAL(18,2)) as signup_to_doc_approved_pct,
  14. CAST((D.TotalMFTs/A.signups)*100 AS DECIMAL(18,2)) as Signup_to_MFT_pct
  15.  
  16. from (select
  17. WEEKOFYEAR(m.created_at + interval '8' hour) as Week,
  18. count(distinct m.id) as signups
  19. from members m
  20. left outer join reservations r on r.member_id = m.id
  21. where m.created_at + interval '8' hour >= @start
  22. and m.imaginary = 'normal'
  23. group by 1 ) A
  24.  
  25. join (select
  26. WEEKOFYEAR(dl.created_at + interval '8' hour) as Week,
  27. count(distinct dl.member_id) as DocUploaded,
  28. count(distinct case when dl.state = 'approved' then dl.member_id end) DocApproved,
  29. count(distinct case when dl.gender = 'man' then dl.member_id end) MaleApproved,
  30. count(distinct case when dl.gender = 'woman' then dl.member_id end) FemaleApproved
  31. from driver_licenses dl
  32. join members m
  33. on m.id = dl.member_id
  34. where dl.created_at + interval '8' hour >= @start
  35. and m.imaginary = 'normal'
  36. group by 1) B
  37. on B.Week = A.Week
  38.  
  39. join (select
  40. WEEKOFYEAR(r.occupy_start_at + interval '8' hour) as Week,
  41. count(distinct case when r.state = 'completed' then r.member_id end) as ActiveMembers,
  42. count(distinct case when r.state = 'completed' then r.id end) as Bookings,
  43. sum(timestampdiff(minute,CONVERT_TZ(r.start_at, '+00:00', '+8:00'), CONVERT_TZ(r.end_at, '+00:00', '+8:00'))/60) as ridelength,
  44. sum(G.amount) as Charges
  45. from reservations r
  46. left outer join (select
  47. ch.reservation_id as rid,
  48. sum(ch.amount) as amount
  49. from payments ch
  50. group by 1
  51.  
  52. ) G on G.rid = r.id
  53. join members m
  54. on m.id = r.member_id
  55. where r.start_at + interval '8' hour >= @start
  56. and m.imaginary in ('normal')
  57. and r.state = 'completed'
  58. group by 1) C on
  59. C.Week = B.Week
  60.  
  61. join (
  62. select
  63. WEEKOFYEAR(c.created_at + interval '8' hour) as Week,
  64. count(distinct case when c.kind = 'subscriptionFee' then c.member_id end) as TotalMFTs
  65. from charges c
  66. join members m
  67. on m.id = c.member_id
  68. where c.created_at + interval '8' hour >= @start
  69. and m.imaginary = 'normal'
  70. group by 1) D on
  71. D.Week = C.Week
  72.  
  73. group by 1
  74. order by 1 asc;
Advertisement
Add Comment
Please, Sign In to add comment