ahmedrahil786

Shiva Query - To Track Coupons

May 7th, 2019
258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.05 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. DATE(CONVERT_TZ(reservations.start_at,'+00:00','+8:00')) AS start_at_date,
  16. TIME(CONVERT_TZ(reservations.start_at, '+00:00', '+8:00')) AS start_at,
  17. DATE(CONVERT_TZ(reservations.end_at,'+00:00','+8:00')) AS end_at_date,
  18. TIME(CONVERT_TZ(reservations.end_at, '+00:00', '+8:00')) AS end_at,
  19. TIME(CONVERT_TZ(reservations.return_at,'+00:00','+8:00')) AS return_at,
  20. 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
  21. #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
  22. round(SUM(c.rev),2) AS rev_amount,
  23. round(SUM(c.rev - p.coupon),2) AS net_rev,
  24. round((SUM(p.coupon)/SUM(c.rev)),2) as coupon_rate
  25. FROM
  26. reservations
  27. LEFT JOIN
  28. coupons ON coupons.reservation_id = reservations.id
  29. LEFT JOIN (
  30. select IFNULL(payments.amount,0) as coupon, payments.reservation_id as rid
  31. from payments
  32. where payments.state = 'normal' and payments.paid_type = 'coupon'
  33. ) as p on p.rid = reservations.id
  34. LEFT JOIN (
  35. select sum(charges.amount) as rev, charges.reservation_id as rid
  36. from charges
  37. where charges.state = 'normal' and charges.kind IN ('rent' , 'oneway', 'd2d', 'mileage')
  38. group by charges.reservation_id
  39. ) as c ON reservations.id = c.rid
  40. LEFT JOIN
  41. zones on reservations.start_zone_id = zones.id
  42. LEFT JOIN
  43. members on reservations.member_id = members.id
  44. LEFT JOIN (
  45. select driver_licenses.member_id as mid, driver_licenses.gender as gender
  46. from driver_licenses
  47. where driver_licenses.state = 'approved'
  48. ) as dl on reservations.member_id = dl.mid
  49. WHERE
  50. reservations.state in ('completed','reserved','inUse','returnDelayed', 'canceled')
  51. AND coupons.coupon_policy_id = 625
  52. #AND coupons.comment IN ('NOMNOM')
  53. AND coupons.reservation_id IS NOT NULL
  54. AND DATE(CONVERT_TZ(reservations.created_at, '+00:00', '+8:00')) >= @startDate
  55. AND DATE(CONVERT_TZ(reservations.created_at, '+00:00', '+8:00')) < date_add(@startDate, interval @dayInterval month)
  56. # Use this to check for reservations that end before 360 minutes
  57. #AND timestampdiff(minute, convert_tz(reservations.start_at, '+00:00', '+8:00'), convert_tz(reservations.return_at, '+00:00', '+8:00')) < 360
  58. #AND timestampdiff(minute, convert_tz(reservations.return_at, '+00:00', '+8:00'), convert_tz(reservations.end_at, '+00:00', '+8:00')) >= 60
  59. GROUP BY reservations.id
  60. ORDER BY reservations.id desc
Advertisement
Add Comment
Please, Sign In to add comment