drop procedure if exists proc_q80;
delimiter //
CREATE PROCEDURE proc_q80 ()
BEGIN
declare v_cnt bigint;
declare v_prev_ts timestamp;
declare v_ts timestamp;
declare v_diff bigint;
declare v_s_diff bigint;
declare v_done smallint;
declare c_vendlog CURSOR FOR SELECT sold_ts FROM vending_log order by sold_ts;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_done = 1;
OPEN c_vendlog;
set v_prev_ts = null;
set v_done = 0;
set v_cnt = 0;
set v_s_diff = 0;
REPEAT
FETCH c_vendlog INTO v_ts;
IF v_done = 0 THEN
set v_diff = unix_timestamp(v_ts) - unix_timestamp(v_prev_ts);
IF v_diff is not null THEN
set v_cnt = v_cnt + 1;
set v_s_diff = v_s_diff + v_diff;
END IF;
set v_prev_ts = v_ts;
END IF;
UNTIL v_done = 1 END REPEAT;
close c_vendlog;
SELECT v_s_diff / v_cnt as avg_diff;
END
//
delimiter ;