ahmedrahil786

Hourly Reservations - Rahil

Jul 31st, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.13 KB | None | 0 0
  1. set @start := '2019-1-6';
  2.  
  3. select
  4. date(r.start_at + interval '8' hour) as date,
  5. round(sum(timestampdiff(minute, r.start_at, r.end_at)/60),2) as dur,
  6. count(distinct case when r.state = 'completed' then r.id end) as Bookings,
  7.  
  8. count(distinct case when (r.start_at + interval 8 hour) <= date_add(@start, interval 0 minute)
  9. and (r.end_at + interval 8 hour) >= date_add(@start, interval 5 minute) then r.id end) as 00am,
  10.  
  11. count(distinct case when (r.start_at + interval 8 hour) <= date_add(@start, interval 60 minute)
  12. and (r.end_at + interval 8 hour) >= date_add(@start, interval 65 minute) then r.id end) as 01am,
  13.  
  14. count(distinct case when (r.start_at + interval 8 hour) <= date_add(@start, interval 120 minute)
  15. and (r.end_at + interval 8 hour) >= date_add(@start, interval 125 minute) then r.id end) as 02am,
  16.  
  17. count(distinct case when (r.start_at + interval 8 hour) <= date_add(@start, interval 180 minute)
  18. and (r.end_at + interval 8 hour) >= date_add(@start, interval 185 minute) then r.id end) as 03am,
  19.  
  20. count(distinct case when (r.start_at + interval 8 hour) <= date_add(@start, interval 240 minute)
  21. and (r.end_at + interval 8 hour) >= date_add(@start, interval 245 minute) then r.id end) as 04am,
  22.  
  23. count(distinct case when (r.start_at + interval 8 hour) <= date_add(@start, interval 300 minute)
  24. and (r.end_at + interval 8 hour) >= date_add(@start, interval 305 minute) then r.id end) as 05am,
  25.  
  26. count(distinct case when (r.start_at + interval 8 hour) <= date_add(@start, interval 360 minute)
  27. and (r.end_at + interval 8 hour) >= date_add(@start, interval 365 minute) then r.id end) as 06am,
  28.  
  29. count(distinct case when (r.start_at + interval 8 hour) <= date_add(@start, interval 420 minute)
  30. and (r.end_at + interval 8 hour) >= date_add(@start, interval 425 minute) then r.id end) as 07am,
  31.  
  32. count(distinct case when (r.start_at + interval 8 hour) <= date_add(@start, interval 480 minute)
  33. and (r.end_at + interval 8 hour) >= date_add(@start, interval 485 minute) then r.id end) as 08am,
  34.  
  35. count(distinct case when (r.start_at + interval 8 hour) <= date_add(@start, interval 540 minute)
  36. and (r.end_at + interval 8 hour) >= date_add(@start, interval 545 minute) then r.id end) as 09am,
  37.  
  38. count(distinct case when (r.start_at + interval 8 hour) <= date_add(@start, interval 600 minute)
  39. and (r.end_at + interval 8 hour) >= date_add(@start, interval 605 minute) then r.id end) as 10am,
  40.  
  41. count(distinct case when (r.start_at + interval 8 hour) <= date_add(@start, interval 660 minute)
  42. and (r.end_at + interval 8 hour) >= date_add(@start, interval 665 minute) then r.id end) as 11am,
  43.  
  44. count(distinct case when (r.start_at + interval 8 hour) <= date_add(@start, interval 720 minute)
  45. and (r.end_at + interval 8 hour) >= date_add(@start, interval 725 minute) then r.id end) as 12am,
  46.  
  47. count(distinct case when (r.start_at + interval 8 hour) <= date_add(@start, interval 780 minute)
  48. and (r.end_at + interval 8 hour) >= date_add(@start, interval 785 minute)then r.id end) as 13am,
  49.  
  50. count(distinct case when (r.start_at + interval 8 hour) <= date_add(@start, interval 840 minute)
  51. and (r.end_at + interval 8 hour) >= date_add(@start, interval 845 minute) then r.id end) as 14am,
  52.  
  53. count(distinct case when (r.start_at + interval 8 hour) <= date_add(@start, interval 900 minute)
  54. and (r.end_at + interval 8 hour) >= date_add(@start, interval 905 minute) then r.id end) as 15am,
  55.  
  56. count(distinct case when (r.start_at + interval 8 hour) <= date_add(@start, interval 960 minute)
  57. and (r.end_at + interval 8 hour) >= date_add(@start, interval 965 minute) then r.id end) as 16am,
  58.  
  59. count(distinct case when (r.start_at + interval 8 hour) <= date_add(@start, interval 1020 minute)
  60. and (r.end_at + interval 8 hour) >= date_add(@start, interval 1025 minute) then r.id end) as 17am,
  61.  
  62. count(distinct case when (r.start_at + interval 8 hour) <= date_add(@start, interval 1040 minute)
  63. and (r.end_at + interval 8 hour) >= date_add(@start, interval 1045 minute) then r.id end) as 18am,
  64.  
  65. count(distinct case when (r.start_at + interval 8 hour) <= date_add(@start, interval 1200 minute)
  66. and (r.end_at + interval 8 hour) >= date_add(@start, interval 1205 minute) then r.id end) as 19am,
  67.  
  68. count(distinct case when (r.start_at + interval 8 hour) <= date_add(@start, interval 1260 minute)
  69. and (r.end_at + interval 8 hour) >= date_add(@start, interval 1265 minute) then r.id end) as 20am,
  70.  
  71. count(distinct case when (r.start_at + interval 8 hour) <= date_add(@start, interval 1320 minute)
  72. and (r.end_at + interval 8 hour) >= date_add(@start, interval 1325 minute) then r.id end) as 21am,
  73.  
  74. count(distinct case when (r.start_at + interval 8 hour) <= date_add(@start, interval 1380 minute)
  75. and (r.end_at + interval 8 hour) >= date_add(@start, interval 1385 minute) then r.id end) as 22am,
  76.  
  77. count(distinct case when (r.start_at + interval 8 hour) <= date_add(@start, interval 1440 minute)
  78. and (r.end_at + interval 8 hour) >= date_add(@start, interval 1445 minute) then r.id end) as 23am
  79.  
  80. from reservations r
  81.  
  82. where (r.start_at + interval 8 hour) >= date_add(@start, interval 0 day)
  83. and (r.start_at + interval 8 hour) <= date_add(@start, interval 1 day)
  84. and r.state = 'completed'
  85.  
  86. group by date
Add Comment
Please, Sign In to add comment