Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 2.04 KB | None | 0 0
  1. set @start := '2018-1-15 00:00';
  2.  
  3. select
  4. A.Week,
  5. A.signups,
  6. B.DocUploaded,
  7. B.DocApproved,
  8. D.TotalMFTs,
  9. A.MFT,
  10. C.ActiveMembers,
  11. C.Bookings,
  12. C.Charges,
  13. B.MaleApproved,
  14. B.FemaleApproved
  15.  
  16.  
  17. from (select
  18. WEEKOFYEAR(m.created_at + interval '8' hour) as Week,
  19. count(distinct m.id) as signups,
  20. count(distinct case when m.grade = 'paidMember' then m.id end) as PaidMembers,
  21. count(distinct case when r.state = 'completed' then m.id end ) as MFT
  22.  
  23. from members m
  24.  
  25. left outer join reservations r on
  26. r.member_id = m.id
  27.  
  28. where m.created_at + interval '8' hour >= @start
  29. and m.imaginary = 'normal') A
  30.  
  31. join (select
  32. WEEKOFYEAR(dl.created_at + interval '8' hour) as Week,
  33. count(distinct dl.member_id) as DocUploaded,
  34. count(distinct case when dl.state = 'approved' then dl.member_id end) DocApproved,
  35. count(distinct case when dl.gender = 'man' then dl.member_id end) MaleApproved,
  36. count(distinct case when dl.gender = 'woman' then dl.member_id end) FemaleApproved
  37.  
  38. from driver_licenses dl
  39.  
  40. join members m
  41. on m.id = dl.member_id
  42.  
  43. where dl.created_at + interval '8' hour >= @start
  44. and m.imaginary = 'normal') B
  45. on B.Week = A.Week
  46.  
  47. join (select
  48. WEEKOFYEAR(r.created_at + interval '8' hour) as Week,
  49. count(distinct case when r.state = 'completed' then r.member_id end) as ActiveMembers,
  50. count(distinct case when r.state = 'completed' then r.id end) as Bookings,
  51. sum(G.amount) as Charges
  52.  
  53.  
  54. from reservations r
  55.  
  56. left outer join (select
  57. ch.reservation_id as rid,
  58. sum(ch.amount) as amount
  59.  
  60. from charges ch
  61.  
  62. group by 1
  63.  
  64. ) G on G.rid = r.id
  65.  
  66.  
  67. join members m
  68. on m.id = r.member_id
  69.  
  70. where r.created_at + interval '8' hour >= @start
  71. and m.imaginary = 'normal') C on
  72. C.Week = B.Week
  73.  
  74. join (
  75. select
  76. WEEKOFYEAR(c.created_at + interval '8' hour) as Week,
  77. count(distinct case when c.kind = 'subscriptionFee' then c.member_id end) as TotalMFTs
  78.  
  79. from charges c
  80.  
  81. join members m
  82. on m.id = c.member_id
  83.  
  84. where c.created_at + interval '8' hour >= @start
  85. and m.imaginary = 'normal') D on
  86. D.Week = C.Week
  87.  
  88. group by 1
  89.  
  90. order by 1 asc;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement