DROP PROCEDURE IF EXISTS sumstats;
delimiter //
CREATE PROCEDURE sumstats (IN startdate CHAR(20), IN enddate CHAR(20))
BEGIN
DECLARE sum_bytes, userid_int, b INT;
DECLARE sum_cost DOUBLE;
DECLARE cur_1 CURSOR FOR SELECT sum(bytes), sum(cost), userid FROM stats WHERE storetime BETWEEN startdate AND enddate GROUP BY userid;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET b=1;
OPEN cur_1;
REPEAT
FETCH cur_1 INTO sum_bytes, sum_cost, userid_int;
IF userid_int IS NOT NULL THEN
SELECT sum_bytes, sum_cost, userid_int;
DELETE FROM stats_cache WHERE storetime = startdate AND userid = userid_int;
INSERT INTO stats_cache ()VALUES (startdate, sum_bytes, userid_int, sum_cost);
END IF;
UNTIL b=1
END REPEAT;
CLOSE cur_1;
SELECT * from stats_cache;
END;//