ahmedrahil786

Shiva Query on Testing Coupon Performance

May 8th, 2019
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.08 KB | None | 0 0
  1. # Detailed promo performance
  2. set @startDate = "2019-04-01 00:00:00";
  3. set @dayInterval = 2;
  4.  
  5. SELECT
  6. reservations.id AS srid,
  7. reservations.member_id as mid,
  8. reservations.state,
  9. (YEAR(current_date()) - YEAR(members.birthday)) as age,
  10. dl.gender as gender,
  11. reservations.start_zone_id,
  12. zones.name,
  13. zones.region,
  14. zones.city,
  15. coupons.comment,
  16. DATE(CONVERT_TZ(reservations.start_at,'+00:00','+8:00')) AS start_at_date,
  17. TIME(CONVERT_TZ(reservations.start_at, '+00:00', '+8:00')) AS start_at,
  18. DATE(CONVERT_TZ(reservations.end_at,'+00:00','+8:00')) AS end_at_date,
  19. TIME(CONVERT_TZ(reservations.end_at, '+00:00', '+8:00')) AS end_at,
  20. TIME(CONVERT_TZ(reservations.return_at,'+00:00','+8:00')) AS return_at,
  21. round((timestampdiff(minute, convert_tz(reservations.start_at, '+00:00', '+8:00'), convert_tz(reservations.end_at, '+00:00', '+8:00'))/60),2) as sdur, # plan duration
  22. #round((timestampdiff(minute, convert_tz(reservations.start_at, '+00:00', '+8:00'), convert_tz(reservations.return_at, '+00:00', '+8:00'))/60),1) as adur, # actual duration
  23. round(SUM(c.rev),2) AS rev_amount,
  24. round(SUM(c.rev - p.coupon),2) AS net_rev,
  25. round((SUM(p.coupon)/SUM(c.rev)),2) as coupon_rate
  26. FROM
  27. reservations
  28. LEFT JOIN
  29. coupons ON coupons.reservation_id = reservations.id
  30. LEFT JOIN (
  31. select IFNULL(payments.amount,0) as coupon, payments.reservation_id as rid
  32. from payments
  33. where payments.state = 'normal' and payments.paid_type = 'coupon'
  34. ) as p on p.rid = reservations.id
  35. LEFT JOIN (
  36. select sum(charges.amount) as rev, charges.reservation_id as rid
  37. from charges
  38. where charges.state = 'normal' and charges.kind IN ('rent' , 'oneway', 'd2d', 'mileage')
  39. group by charges.reservation_id
  40. ) as c ON reservations.id = c.rid
  41. LEFT JOIN
  42. zones on reservations.start_zone_id = zones.id
  43. LEFT JOIN
  44. members on reservations.member_id = members.id
  45. LEFT JOIN (
  46. select driver_licenses.member_id as mid, driver_licenses.gender as gender
  47. from driver_licenses
  48. where driver_licenses.state = 'approved'
  49. ) as dl on reservations.member_id = dl.mid
  50. WHERE
  51. reservations.state in ('completed','reserved','inUse','returnDelayed', 'canceled')
  52. AND coupons.coupon_policy_id in ('630','631')
  53. #AND coupons.comment IN ('NOMNOM')
  54. AND coupons.reservation_id IS NOT NULL
  55. AND DATE(CONVERT_TZ(reservations.created_at, '+00:00', '+8:00')) >= @startDate
  56. AND DATE(CONVERT_TZ(reservations.created_at, '+00:00', '+8:00')) < date_add(@startDate, interval @dayInterval month)
  57. # Use this to check for reservations that end before 360 minutes
  58. #AND timestampdiff(minute, convert_tz(reservations.start_at, '+00:00', '+8:00'), convert_tz(reservations.return_at, '+00:00', '+8:00')) < 360
  59. #AND timestampdiff(minute, convert_tz(reservations.return_at, '+00:00', '+8:00'), convert_tz(reservations.end_at, '+00:00', '+8:00')) >= 60
  60. GROUP BY reservations.id
  61. ORDER BY reservations.id desc
Advertisement
Add Comment
Please, Sign In to add comment