ahmedrahil786

Installs to MFT - Shanyi - Rahil

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