Guest User

Untitled

a guest
May 24th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.46 KB | None | 0 0
  1. CREATE DEFINER=`xxxxxx`@`%` PROCEDURE `my_sp`(IN duration INT, IN period VARCHAR(5), IN type_cat VARCHAR(8), IN size_class_list VARCHAR(1000), IN zones_list VARCHAR(1000), IN laden_flag_list VARCHAR(255))
  2. BEGIN
  3. DECLARE time_frame INT;
  4. SET time_frame = IFNULL(duration, 6);
  5. SELECT t0.zone as zone_id, COUNT(DISTINCT t0.vessel_imo) AS vessel_count,
  6. CASE
  7. WHEN period = 'month' THEN DATE_FORMAT(t0.creation_date, "%Y%m")
  8. ELSE YEARWEEK(t0.creation_date)
  9. END AS period,
  10. CASE
  11. WHEN type_cat = 'tanker' THEN 'Tanker'
  12. ELSE 'Dry Bulk'
  13. END AS vessel_type, t2.size_class_id FROM vessel_position t0
  14. INNER JOIN vessel_types t1 ON t1.vessel_imo = t0.vessel_imo
  15. INNER JOIN vessel_size_class t2 ON t2.vessel_imo = t0.vessel_imo
  16. WHERE t0.creation_date >= DATE_SUB(CURDATE(), INTERVAL time_frame MONTH)
  17. AND
  18. (
  19. CASE
  20. WHEN type_cat = 'tanker' THEN t1.type_id = 2 OR t1.type_id = 3 OR t1.type_id = 4
  21. ELSE t1.type_id = 1
  22. END
  23. )
  24. AND (zones_list IS NULL OR FIND_IN_SET(t0.zone, zones_list))
  25. AND (size_class_list IS NULL OR FIND_IN_SET(t2.size_class_id, size_class_list))
  26. GROUP BY t0.zone,
  27. CASE
  28. WHEN period = 'month' THEN DATE_FORMAT(t0.creation_date, "%Y%m")
  29. ELSE YEARWEEK(t0.creation_date, 1)
  30. END, t2.size_class_id, vessel_type
  31. ORDER BY t0.zone, t2.size_class_id, t0.creation_date, COUNT(t0.vessel_imo);
  32. END
Add Comment
Please, Sign In to add comment