Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #set @start := '2018-6-31 00:00';
- #set @end := '2018-12-31 00:00';
- select
- D.Week,
- D.TotalMFTs,
- C.ActiveMembers,
- C.Bookings,
- C.NonCancelledBookings,
- C.Netrev,
- C.Grossrev,
- CAST((D.TotalMFTs/C.ActiveMembers)*100 AS DECIMAL(18,2)) as MFT_DAUPct
- from (select
- WEEKOFYEAR(r.start_at + interval '8' hour) as Week,
- count(distinct case when r.state = 'completed' then r.member_id end) as ActiveMembers,
- count(distinct case when r.state = 'completed' then r.id end) as Bookings,
- count(distinct case when r.state NOT IN ('canceled', 'fail') then r.id end) as NonCancelledBookings,
- #sum(timestampdiff(hour,CONVERT_TZ(r.occupy_start_at, '+00:00', '+8:00'), CONVERT_TZ(r.occupy_end_at, '+00:00', '+8:00'))) as ridelength,
- sum(G.NetRev) as Netrev,
- sum(G.GrossRev) as Grossrev
- from reservations r
- join members m
- on m.id = r.member_id
- left join (select
- ch.reservation_id as rid,
- sum(case when ch.state = 'normal' and ch.paid_type = 'card' then ch.amount end) as NetRev,
- sum(case when ch.state = 'normal' then ch.amount end) as GrossRev
- from payments ch
- group by 1
- ) G on G.rid = r.id
- where r.start_at + interval '8' hour >= @start
- and r.start_at + interval '8' hour < @end
- and m.imaginary = 'normal'
- group by 1) C
- join (
- select
- WEEKOFYEAR(c.created_at + interval '8' hour) as Week,
- count(distinct case when c.kind = 'subscriptionFee' then c.member_id end) as TotalMFTs,
- sum(c.amount) as amount
- from charges c
- join members m
- on m.id = c.member_id
- where c.created_at + interval '8' hour >= @start
- and c.created_at + interval '8' hour < @end
- and m.imaginary = 'normal'
- group by 1) D
- on D.Week = C.Week
- group by 1
- order by 1 asc;
Advertisement
Add Comment
Please, Sign In to add comment