Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.93 KB | None | 0 0
  1. SELECT
  2. MIN(DATE(s.receive_date)) order_date, YEAR(s.receive_date) y, MONTH(s.receive_date) m,
  3. s.order_delivery_id,
  4. s.`name`,
  5. COUNT(s.id) kol,
  6. SUM(IF(s.result in(9, 10), 1, 0)) 'Промоутеры',
  7. SUM(IF(s.result in(7, 8), 1, 0)) 'Нейтралы',
  8. SUM(IF(s.result BETWEEN 0 AND 6, 1,0)) 'Критики',
  9. SUM(IF(s.result BETWEEN 0 AND 6, 1,0)) / COUNT(s.id) 'Доля критиков',
  10. ROUND(SUM(IF(s.result in(9, 10), 1, IF(s.result in (7,8), 0, -1))) / COUNT(*), 2) nps
  11. FROM (
  12. SELECT n.*, o.order_delivery_id, od.`name`, COUNT(nr.order_id), GROUP_CONCAT(DISTINCT od.id), GROUP_CONCAT(DISTINCT o.id), MAX(IF(od.id = 1, 1, 0)) samovivoz, MAX(IF(od.id = 2, 1, 0)) courier, MAX(IF(od.id = 3, 1, 0)) nova_poshta
  13. FROM nps_result n
  14. LEFT JOIN nps_relations nr ON n.nps_polls_id = nr.nps_polls_id
  15. LEFT JOIN orders o ON nr.order_id = o.id
  16. LEFT JOIN order_delivery od ON o.order_delivery_id = od.id
  17. WHERE
  18. n.result >= 0
  19. AND n.order_id IS NULL
  20. AND o.order_delivery_id NOT IN (4, 5, 6)
  21. AND DATE(o.date_create) >= '2017-09-01'
  22. -- AND DATE(n.receive_date) = '2019-10-21'
  23. GROUP BY n.id
  24. ) s
  25. GROUP BY YEAR(s.receive_date), MONTH(s.receive_date)
  26.  
  27. UNION ALL
  28.  
  29. SELECT
  30. MIN(DATE(nr.receive_date)) order_date, YEAR(nr.receive_date), MONTH(nr.receive_date),
  31. o.order_delivery_id,
  32. od.`name`,
  33. COUNT(nr.order_id) kol,
  34. SUM(IF(result in(9, 10), 1, 0)) 'Промоутеры',
  35. SUM(IF(result in(7, 8), 1, 0)) 'Нейтралы',
  36. SUM(IF(result BETWEEN 0 AND 6, 1,0)) 'Критики',
  37. SUM(IF(result BETWEEN 0 AND 6, 1,0)) / COUNT(nr.order_id) 'Доля критиков',
  38. ROUND(SUM(IF(result in(9, 10), 1, IF(result in (7,8), 0, -1))) / COUNT(*), 2) nps
  39. FROM nps_result nr
  40. LEFT JOIN orders o ON nr.order_id = o.id
  41. LEFT JOIN order_delivery od ON o.order_delivery_id = od.id
  42. WHERE o.order_delivery_id NOT IN (4, 6, 7) AND DATE(nr.receive_date) >= '2017-09-01' AND nr.order_id IS NOT NULL
  43. GROUP BY YEAR(nr.receive_date), MONTH(nr.receive_date)
  44.  
  45. ORDER BY y, m
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement