pro_stat_issue.sql 832B

12345678910111213141516171819202122232425262728
  1. DROP PROCEDURE IF EXISTS `pro_stat_issue`;
  2. delimiter ;;
  3. CREATE PROCEDURE `pro_stat_issue`(IN `ls_type` varchar(32),IN `ls_start` varchar(20),IN `ls_end` varchar(20))
  4. BEGIN
  5. DECLARE ls_stat_name VARCHAR(20);
  6. IF ls_type = 'issue_daily' OR ls_type = 'issue_monthly' THEN
  7. SET ls_stat_name = ls_start;
  8. IF ls_type = 'issue_monthly' THEN
  9. SET ls_stat_name = SUBSTR(ls_start FROM 1 FOR 7);
  10. END IF;
  11. # 先清除数据
  12. DELETE t FROM ts_stat_data t WHERE t.stat_type = ls_type AND t.`name` = ls_stat_name;
  13. # 再统计数据
  14. INSERT INTO ts_stat_data (stat_type, `name`, `value`)
  15. SELECT ls_type, ls_stat_name, COUNT(*)
  16. FROM ta_issue t
  17. WHERE t.`status` > -1
  18. AND TO_DAYS(t.create_date) >= TO_DAYS(ls_start)
  19. AND TO_DAYS(t.create_date) <= TO_DAYS(ls_end);
  20. END IF;
  21. END
  22. ;;
  23. delimiter ;