流失用户统计(1周内未登陆的用户)。
?
CREATE FUNCTION `statics_user_unlogin_week`() RETURNS int(11) COMMENT '流失用户统计(一周内未登录的用户)' BEGIN #Routine body goes here... DECLARE stopFlag INT DEFAULT 0 ; DECLARE _shop_id INT(11) DEFAULT 0; #餐厅id DECLARE _device VARCHAR(50); #手机设备号 DECLARE _a_token CHAR(64) DEFAULT '-1'; #与苹果服务器会话 DECLARE _s_token VARCHAR(64) DEFAULT NULL; #与点菜网服务器会话 DECLARE _lost_count INT(11) DEFAULT 0; DECLARE _start_day date; DECLARE _end_day date; #统计1周前下线的用户数(1周内未登陆) DECLARE cur1 CURSOR FOR SELECT id, device, a_token, s_token FROM visitor_user WHERE DATEDIFF(NOW(), off_time) >= 8; DECLARE CONTINUE HANDLER FOR NOT FOUND SET stopFlag=1; OPEN cur1; FETCH cur1 INTO _shop_id, _device, _a_token, _s_token; WHILE stopFlag = 0 do INSERT INTO report_user_unlogin_week_detail(id, shop_id, device, a_token, s_token) values (UUID(), _shop_id, _device, _a_token, _s_token); FETCH cur1 INTO _shop_id, _device, _a_token, _s_token; END WHILE; #今天之前1周的第1天(例如: 2013-07-07) SET _start_day = DATE_SUB(DATE_FORMAT(now(),'%Y-%m-%d'), INTERVAL 8 DAY); #今天之前1周的最后1天(例如: 2013-07-13) SET _end_day = DATE_SUB(DATE_FORMAT(now(),'%Y-%m-%d'), INTERVAL 1 DAY); SELECT COUNT(device) into _lost_count FROM visitor_user WHERE DATEDIFF(NOW(), off_time) >= 8; #统计1周内的未登陆的用户数 INSERT INTO report_user_unlogin_week(id, start_day, end_day, lost_count, type_client) VALUES(UUID(), _start_day, _end_day, _lost_count, 0); RETURN 1; END
?