展示全平台书本订购榜和全平台周排行榜
订购榜表结构设计:日期(yyyymmdd)、ISBN、订购数量(报订单确认的订购数量)、统计时间
采用数据库的存储过程统计每天的书本订购数量,然后采用数据库的定时器调用存储过程,每天凌晨跑一次,统计上一天的书本订购情况。
展示全平台书本订购榜和全平台周排行榜
订购榜表结构设计:日期(yyyymmdd)、ISBN、订购数量(报订单确认的订购数量)、统计时间
采用数据库的存储过程统计每天的书本订购数量,然后采用数据库的定时器调用存储过程,每天凌晨跑一次,统计上一天的书本订购情况。
//删除存储过程
DROP PROCEDURE IF EXISTS getGdsInfoRank;
//创建存储过程
DELIMITER $$
CREATE PROCEDURE getGdsInfoRank()
BEGIN
DECLARE t_amount BIGINT;
DECLARE t_isbn VARCHAR(256);
DECLARE done INT;
DECLARE cur_rank CURSOR for
select count(*) as t_amount,isbn as t_isbn from t_ord_sub where date(order_time) =date_sub(curdate(),interval 1 day) and sub_status='可供' group by isbn;
DECLARE CONTINUE HANDLER for not FOUND set done=1;
open cur_rank;
posLoop:LOOP
FETCH cur_rank INTO t_amount,t_isbn;
IF done=1 THEN
LEAVE posLoop;
END IF;
insert into t_gds_info_rank(day,isbn,amount,count_time) values(date_sub(curdate(),interval 1 day),t_isbn,t_amount,NOW());
END LOOP posLoop;
CLOSE cur_rank;
end$$
DELIMITER ;
//查看定时器是否开启
SHOW VARIABLES LIKE 'event_scheduler';
//查看事件
SHOW EVENTS;
//删除事件
drop event if EXISTS eventGetGdsInfoRank;
//创建事件--每天调用一次
create event eventGetGdsInfoRank
on schedule
EVERY 1 day
STARTS '2020-12-12 00:06:00'
do call getGdsInfoRank();
//开启事件
ALTER EVENT eventGetGdsInfoRank ON COMPLETION PRESERVE ENABLE;