NonplayerCharacter

PostgreSQL | PGExercises.com | Rolling average revenue

Mar 8th, 2022
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- https://pgexercises.com/questions/aggregates/rollingavg.html
  2.  
  3. with dates as (
  4.     SELECT day::DATE
  5.     FROM   generate_series(timestamp '2012-07-10', '2012-08-31', '1 day') day
  6. ),
  7.  
  8. revenues as (
  9.     select day,
  10.             sum(slots * (case when memid=0 then guestcost else membercost end)) as revenue
  11.     from cd.bookings b
  12.     right join dates d -- some days may have no revenue
  13.     on b.starttime::DATE = d.day
  14.     join cd.facilities f
  15.     on b.facid = f.facid
  16.     group by 1
  17.     order by 1 asc
  18. ),
  19.  
  20. longlist as(
  21.     select day,
  22.     avg(revenue) OVER (
  23.                 ORDER BY day asc
  24.                 ROWS BETWEEN 14 PRECEDING AND CURRENT ROW)
  25. from revenues)
  26.  
  27. select * from longlist
  28. where day::DATE > '2012-07-31'
Add Comment
Please, Sign In to add comment