123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819 |
- CREATE DEFINER=`root`@`127.0.0.1` PROCEDURE `runltv`(IN `iday` date)
- BEGIN
- DECLARE Tflag INT DEFAULT 0;
- DECLARE Tappid INT;
- DECLARE Tdate DATE;
- DECLARE Tregtime INT;
- DECLARE Tregday INT;
- DECLARE Tagentid INT;
- DECLARE Tmobile_prefix INT DEFAULT 156;
- DECLARE Tregcnt INT;
- DECLARE Tsummoney DECIMAL(12,2);
- DECLARE Tsetdate DATE DEFAULT iday;
- DECLARE Tstarttime INT;
- DECLARE Tendtime INT;
- DECLARE TdayFlag varchar(20);
- DECLARE Tdata_exist CHAR(2);
- DECLARE TformatDate DATE DEFAULT date_format(Tsetdate,'%Y-%m-%d');
- # 渠道游戏
- DECLARE Tagcursor CURSOR FOR SELECT reg_time,app_id,agent_id,reg_days,sum_money FROM `log_ltv_day_mem_temp` WHERE reg_days < 361 AND sum_money > 0 GROUP BY app_id,agent_id,reg_days;
- # 渠道
- DECLARE Tacursor CURSOR FOR SELECT reg_time,agent_id,reg_days,SUM(sum_money) as sum_money FROM `log_ltv_day_mem_temp` WHERE reg_days < 361 AND sum_money > 0 GROUP BY agent_id,reg_days;
- # 游戏
- DECLARE Tgcursor CURSOR FOR SELECT reg_time,app_id,reg_days,SUM(sum_money) as sum_money FROM `log_ltv_day_mem_temp` WHERE reg_days < 361 AND sum_money > 0 GROUP BY app_id,reg_days;
- # 每日
- DECLARE Tcursor CURSOR FOR SELECT reg_time,reg_days,SUM(sum_money) as sum_money FROM `log_ltv_day_mem_temp` WHERE reg_days < 361 AND sum_money > 0 GROUP BY reg_days;
- DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET Tflag = 1;
- SET Tstarttime=unix_timestamp(Tsetdate);
- SET Tendtime=Tstarttime+86400;
- SET @Ttable = CONCAT('db_sdk_test_log.log_day_mem_',date_format(Tsetdate,'%Y%m') );
- #判断是否存在临时表
- CREATE TABLE IF NOT EXISTS `log_ltv_day_mem_temp` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `date` date NOT NULL DEFAULT '0000-00-00' COMMENT '日期',
- `mem_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '玩家ID',
- `agent_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '归属渠道',
- `app_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '游戏ID',
- `reg_time` bigint(11) NOT NULL DEFAULT '0' COMMENT '玩家注册时间',
- `reg_days` int(11) NOT NULL DEFAULT '0' COMMENT '注册天数',
- `device_id` varchar(64) NOT NULL DEFAULT '' COMMENT '手机设备码',
- `sum_money` double(12,2) NOT NULL DEFAULT '0.00' COMMENT '累计充值',
- `sum_real_money` double(12,2) NOT NULL DEFAULT '0.00' COMMENT '自然流水金额',
- PRIMARY KEY (`id`),
- UNIQUE KEY `lldmt_date_mem_app_unique` (`date`,`mem_id`,`app_id`),
- KEY `ldmt_agent_index` (`agent_id`),
- KEY `ldmt_app_index` (`app_id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='ltv玩家每日临时';
- #清除数据
- TRUNCATE `log_ltv_day_mem_temp`;
- ALTER TABLE `log_ltv_day_mem_temp` DISABLE KEYS;
- SET @ldmt_sql = "REPLACE INTO `log_ltv_day_mem_temp` (`date`,`mem_id`,`agent_id`,`app_id`,`reg_time`,`reg_days`,`device_id`,`sum_money`,`sum_real_money`) SELECT `date`,`mem_id`,`agent_id`,`app_id`,`reg_time`,`reg_days`,`device_id`,`sum_money`,`sum_real_money`";
- SET @ldmt_sql = concat(@ldmt_sql, ' FROM ',@Ttable,' where `date`=\'',Tsetdate,'\'');
- PREPARE ldmt_sql_ex FROM @ldmt_sql;
- EXECUTE ldmt_sql_ex;
- ALTER TABLE log_ltv_day_mem_temp ENABLE KEYS;
- DROP TABLE IF EXISTS log_ldgac_temp;
- CREATE TABLE IF NOT EXISTS `log_ldgac_temp` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `date` date NOT NULL DEFAULT '0000-00-00' COMMENT '日期',
- `app_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '游戏ID',
- `agent_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '渠道ID',
- `reg_cnt` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '注册玩家数',
- `sum_money` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT '充值金额',
- `sum_real_money` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT '自然流水金额',
- PRIMARY KEY (`id`) USING BTREE,
- UNIQUE KEY `dga_dga_unique` (`date`,`app_id`,`agent_id`) USING BTREE,
- KEY `dga_game_index` (`app_id`) USING BTREE,
- KEY `dga_agent_index` (`agent_id`) USING BTREE
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='ltv每日游戏推广员统计表';
- #写入每日临时
- TRUNCATE `log_ldgac_temp`;
- ALTER TABLE log_ldgac_temp DISABLE KEYS;
- REPLACE INTO `log_ldgac_temp`
- (
- `date`,
- `app_id`,
- `agent_id`,
- `reg_cnt`,
- `sum_money`,
- `sum_real_money`
- )
- SELECT
- IFNULL(lldmt.`date`,TformatDate) AS `date`,
- IFNULL(lldmt.`app_id`,0) AS `app_id`,
- IFNULL(lldmt.`agent_id`,0) AS `agent_id`,
- COUNT(DISTINCT(CASE WHEN lldmt.`reg_days`=0 AND lldmt.`mem_id` > 0 THEN `mem_id` END)) AS `reg_cnt` ,
- IFNULL(SUM(lldmt.`sum_money`),0) AS `sum_money` ,
- SUM(lldmt.`sum_real_money`) AS `sum_real_money`
- FROM log_ltv_day_mem_temp lldmt
- GROUP BY agent_id, app_id;
- ALTER TABLE log_ldgac_temp ENABLE KEYS;
- #每日游戏推广统计表
- ALTER TABLE dw_ltv_game_agent DISABLE KEYS;
- REPLACE INTO `dw_ltv_game_agent`
- (
- `date`,
- `app_id`,
- `agent_id`,
- `reg_cnt`
- )
- SELECT
- IFNULL(`date`,TformatDate) AS `date`,
- IFNULL(`app_id`,0) AS `app_id`,
- IFNULL(`agent_id`,0) AS `agent_id`,
- IFNULL(`reg_cnt`,0) AS `reg_cnt`
- FROM log_ldgac_temp
- WHERE `reg_cnt`>0;
- ALTER TABLE dw_ltv_game_agent ENABLE KEYS;
- #每日推广员统计表
- ALTER TABLE dw_ltv_agent DISABLE KEYS;
- REPLACE INTO `dw_ltv_agent`
- (
- `date`,
- `agent_id`,
- `reg_cnt`
- )
- SELECT
- IFNULL(ldmt.`date`,TformatDate) AS `date`,
- ldmt.`agent_id` AS `agent_id`,
- COUNT(DISTINCT(CASE WHEN ldmt.`reg_days`=0 AND ldmt.`mem_id` > 0 THEN `mem_id` END)) AS `reg_cnt`
- FROM log_ltv_day_mem_temp ldmt
- WHERE ldmt.`reg_days` = 0 AND ldmt.`mem_id` > 0
- GROUP BY agent_id;
- ALTER TABLE dw_ltv_agent ENABLE KEYS;
- #每日游戏统计表
- ALTER TABLE dw_ltv_game DISABLE KEYS;
- REPLACE INTO `dw_ltv_game`
- (
- `date`,
- `app_id`,
- `reg_cnt`
- )
- SELECT
- IFNULL(`date`,TformatDate) AS `date`,
- IFNULL(`app_id`,0) AS `app_id`,
- SUM(`reg_cnt`) AS `reg_cnt`
- FROM log_ldgac_temp
- WHERE `reg_cnt`>0
- GROUP BY app_id;
- ALTER TABLE dw_ltv_game ENABLE KEYS;
- #每日统计表
- ALTER TABLE dw_ltv_day DISABLE KEYS;
- REPLACE INTO `dw_ltv_day`
- (
- `date`,
- `reg_cnt`
- )
- SELECT
- IFNULL(ldmt.`date`,TformatDate) AS `date`,
- COUNT(DISTINCT(CASE WHEN ldmt.`reg_days`=0 AND ldmt.`mem_id` > 0 THEN `mem_id` END)) AS `reg_cnt`
- FROM log_ltv_day_mem_temp ldmt
- WHERE ldmt.`reg_days` = 0 AND ldmt.`mem_id` > 0;
- ALTER TABLE dw_ltv_day ENABLE KEYS;
- # 渠道游戏LTV
- SET Tflag=0;
- OPEN Tagcursor;
- FETCH Tagcursor INTO Tregtime,Tappid,Tagentid,Tregday,Tsummoney;
- WHILE Tflag<>1 DO
- IF Tregday < 360 THEN
- IF Tregday < 60 THEN
- CASE Tregday
- WHEN 0 THEN
- SET TdayFlag = 'day1';
- WHEN 1 THEN
- SET TdayFlag = 'day2';
- WHEN 2 THEN
- SET TdayFlag = 'day3';
- WHEN 3 THEN
- SET TdayFlag = 'day4';
- WHEN 4 THEN
- SET TdayFlag = 'day5';
- WHEN 5 THEN
- SET TdayFlag = 'day6';
- WHEN 6 THEN
- SET TdayFlag = 'day7';
- WHEN 7 THEN
- SET TdayFlag = 'day8';
- WHEN 8 THEN
- SET TdayFlag = 'day9';
- WHEN 9 THEN
- SET TdayFlag = 'day10';
- WHEN 10 THEN
- SET TdayFlag = 'day11';
- WHEN 11 THEN
- SET TdayFlag = 'day12';
- WHEN 12 THEN
- SET TdayFlag = 'day13';
- WHEN 13 THEN
- SET TdayFlag = 'day14';
- WHEN 14 THEN
- SET TdayFlag = 'day15';
- WHEN 15 THEN
- SET TdayFlag = 'day16';
- WHEN 16 THEN
- SET TdayFlag = 'day17';
- WHEN 17 THEN
- SET TdayFlag = 'day18';
- WHEN 18 THEN
- SET TdayFlag = 'day19';
- WHEN 19 THEN
- SET TdayFlag = 'day20';
- WHEN 20 THEN
- SET TdayFlag = 'day21';
- WHEN 21 THEN
- SET TdayFlag = 'day22';
- WHEN 22 THEN
- SET TdayFlag = 'day23';
- WHEN 23 THEN
- SET TdayFlag = 'day24';
- WHEN 24 THEN
- SET TdayFlag = 'day25';
- WHEN 25 THEN
- SET TdayFlag = 'day26';
- WHEN 26 THEN
- SET TdayFlag = 'day27';
- WHEN 27 THEN
- SET TdayFlag = 'day28';
- WHEN 28 THEN
- SET TdayFlag = 'day29';
- WHEN 29 THEN
- SET TdayFlag = 'day30';
- WHEN 30 THEN
- SET TdayFlag = 'day31';
- WHEN 31 THEN
- SET TdayFlag = 'day32';
- WHEN 32 THEN
- SET TdayFlag = 'day33';
- WHEN 33 THEN
- SET TdayFlag = 'day34';
- WHEN 34 THEN
- SET TdayFlag = 'day35';
- WHEN 35 THEN
- SET TdayFlag = 'day36';
- WHEN 36 THEN
- SET TdayFlag = 'day37';
- WHEN 37 THEN
- SET TdayFlag = 'day38';
- WHEN 38 THEN
- SET TdayFlag = 'day39';
- WHEN 39 THEN
- SET TdayFlag = 'day40';
- WHEN 40 THEN
- SET TdayFlag = 'day41';
- WHEN 41 THEN
- SET TdayFlag = 'day42';
- WHEN 42 THEN
- SET TdayFlag = 'day43';
- WHEN 43 THEN
- SET TdayFlag = 'day44';
- WHEN 44 THEN
- SET TdayFlag = 'day45';
- WHEN 45 THEN
- SET TdayFlag = 'day46';
- WHEN 46 THEN
- SET TdayFlag = 'day47';
- WHEN 47 THEN
- SET TdayFlag = 'day48';
- WHEN 48 THEN
- SET TdayFlag = 'day49';
- WHEN 49 THEN
- SET TdayFlag = 'day50';
- WHEN 50 THEN
- SET TdayFlag = 'day51';
- WHEN 51 THEN
- SET TdayFlag = 'day52';
- WHEN 52 THEN
- SET TdayFlag = 'day53';
- WHEN 53 THEN
- SET TdayFlag = 'day54';
- WHEN 54 THEN
- SET TdayFlag = 'day55';
- WHEN 55 THEN
- SET TdayFlag = 'day56';
- WHEN 56 THEN
- SET TdayFlag = 'day57';
- WHEN 57 THEN
- SET TdayFlag = 'day58';
- WHEN 58 THEN
- SET TdayFlag = 'day59';
- WHEN 59 THEN
- SET TdayFlag = 'day60';
- END CASE;
- ELSEIF Tregday < 90 THEN
- SET TdayFlag = 'day90';
- ELSEIF Tregday < 120 THEN
- SET TdayFlag = 'day120';
- ELSEIF Tregday < 180 THEN
- SET TdayFlag = 'day180';
- ELSEIF Tregday < 270 THEN
- SET TdayFlag = 'day270';
- ELSE
- SET TdayFlag = 'day360';
- END IF;
- #校验数据是否存在
- SELECT IFNULL((SELECT 'Y' from `dw_ltv_game_agent` where `date`=FROM_UNIXTIME(Tregtime,'%Y-%m-%d') AND `agent_id`=Tagentid AND `app_id`=Tappid limit 1),'N') INTO Tdata_exist;
- IF 'N' = Tdata_exist THEN
- #不存在数据则创建
- SET @sqlstr=CONCAT('INSERT INTO `dw_ltv_game_agent` (`date`,`app_id`,`agent_id`,`reg_cnt`,`sum_money`,',TdayFlag,') VALUES (FROM_UNIXTIME(',Tregtime,',"%Y-%m-%d"),',Tappid,',',Tagentid,',1,',Tsummoney,',',Tsummoney,')');
- PREPARE stmt FROM @sqlstr;
- EXECUTE stmt;
- DEALLOCATE PREPARE stmt;
- ELSE
- SET @sqlstr=CONCAT('update dw_ltv_game_agent SET ',TdayFlag,'=',TdayFlag,'+',Tsummoney,', sum_money = sum_money + ',Tsummoney,' WHERE date=FROM_UNIXTIME(',Tregtime,',"%Y-%m-%d") AND agent_id=',Tagentid,' AND app_id=',Tappid);
- PREPARE stmt FROM @sqlstr;
- EXECUTE stmt;
- DEALLOCATE PREPARE stmt;
- END IF;
- END IF;
- FETCH Tagcursor INTO Tregtime,Tappid,Tagentid,Tregday,Tsummoney;
- END WHILE;
- CLOSE Tagcursor;
- # 渠道LTV
- SET Tflag=0;
- OPEN Tacursor;
- FETCH Tacursor INTO Tregtime,Tagentid,Tregday,Tsummoney;
- WHILE Tflag<>1 DO
- IF Tregday < 360 THEN
- IF Tregday < 60 THEN
- CASE Tregday
- WHEN 0 THEN
- SET TdayFlag = 'day1';
- WHEN 1 THEN
- SET TdayFlag = 'day2';
- WHEN 2 THEN
- SET TdayFlag = 'day3';
- WHEN 3 THEN
- SET TdayFlag = 'day4';
- WHEN 4 THEN
- SET TdayFlag = 'day5';
- WHEN 5 THEN
- SET TdayFlag = 'day6';
- WHEN 6 THEN
- SET TdayFlag = 'day7';
- WHEN 7 THEN
- SET TdayFlag = 'day8';
- WHEN 8 THEN
- SET TdayFlag = 'day9';
- WHEN 9 THEN
- SET TdayFlag = 'day10';
- WHEN 10 THEN
- SET TdayFlag = 'day11';
- WHEN 11 THEN
- SET TdayFlag = 'day12';
- WHEN 12 THEN
- SET TdayFlag = 'day13';
- WHEN 13 THEN
- SET TdayFlag = 'day14';
- WHEN 14 THEN
- SET TdayFlag = 'day15';
- WHEN 15 THEN
- SET TdayFlag = 'day16';
- WHEN 16 THEN
- SET TdayFlag = 'day17';
- WHEN 17 THEN
- SET TdayFlag = 'day18';
- WHEN 18 THEN
- SET TdayFlag = 'day19';
- WHEN 19 THEN
- SET TdayFlag = 'day20';
- WHEN 20 THEN
- SET TdayFlag = 'day21';
- WHEN 21 THEN
- SET TdayFlag = 'day22';
- WHEN 22 THEN
- SET TdayFlag = 'day23';
- WHEN 23 THEN
- SET TdayFlag = 'day24';
- WHEN 24 THEN
- SET TdayFlag = 'day25';
- WHEN 25 THEN
- SET TdayFlag = 'day26';
- WHEN 26 THEN
- SET TdayFlag = 'day27';
- WHEN 27 THEN
- SET TdayFlag = 'day28';
- WHEN 28 THEN
- SET TdayFlag = 'day29';
- WHEN 29 THEN
- SET TdayFlag = 'day30';
- WHEN 30 THEN
- SET TdayFlag = 'day31';
- WHEN 31 THEN
- SET TdayFlag = 'day32';
- WHEN 32 THEN
- SET TdayFlag = 'day33';
- WHEN 33 THEN
- SET TdayFlag = 'day34';
- WHEN 34 THEN
- SET TdayFlag = 'day35';
- WHEN 35 THEN
- SET TdayFlag = 'day36';
- WHEN 36 THEN
- SET TdayFlag = 'day37';
- WHEN 37 THEN
- SET TdayFlag = 'day38';
- WHEN 38 THEN
- SET TdayFlag = 'day39';
- WHEN 39 THEN
- SET TdayFlag = 'day40';
- WHEN 40 THEN
- SET TdayFlag = 'day41';
- WHEN 41 THEN
- SET TdayFlag = 'day42';
- WHEN 42 THEN
- SET TdayFlag = 'day43';
- WHEN 43 THEN
- SET TdayFlag = 'day44';
- WHEN 44 THEN
- SET TdayFlag = 'day45';
- WHEN 45 THEN
- SET TdayFlag = 'day46';
- WHEN 46 THEN
- SET TdayFlag = 'day47';
- WHEN 47 THEN
- SET TdayFlag = 'day48';
- WHEN 48 THEN
- SET TdayFlag = 'day49';
- WHEN 49 THEN
- SET TdayFlag = 'day50';
- WHEN 50 THEN
- SET TdayFlag = 'day51';
- WHEN 51 THEN
- SET TdayFlag = 'day52';
- WHEN 52 THEN
- SET TdayFlag = 'day53';
- WHEN 53 THEN
- SET TdayFlag = 'day54';
- WHEN 54 THEN
- SET TdayFlag = 'day55';
- WHEN 55 THEN
- SET TdayFlag = 'day56';
- WHEN 56 THEN
- SET TdayFlag = 'day57';
- WHEN 57 THEN
- SET TdayFlag = 'day58';
- WHEN 58 THEN
- SET TdayFlag = 'day59';
- WHEN 59 THEN
- SET TdayFlag = 'day60';
- END CASE;
- ELSEIF Tregday < 90 THEN
- SET TdayFlag = 'day90';
- ELSEIF Tregday < 120 THEN
- SET TdayFlag = 'day120';
- ELSEIF Tregday < 180 THEN
- SET TdayFlag = 'day180';
- ELSEIF Tregday < 270 THEN
- SET TdayFlag = 'day270';
- ELSE
- SET TdayFlag = 'day360';
- END IF;
- #校验数据是否存在
- SELECT IFNULL((SELECT 'Y' from `dw_ltv_agent` where `date`=FROM_UNIXTIME(Tregtime,'%Y-%m-%d') AND `agent_id`=Tagentid limit 1),'N') INTO Tdata_exist;
- IF 'N' = Tdata_exist THEN
- #不存在数据则创建
- SET @sqlstr=CONCAT('INSERT INTO `dw_ltv_agent` (`date`,`agent_id`,`reg_cnt`,`sum_money`,',TdayFlag,') VALUES (FROM_UNIXTIME(',Tregtime,',"%Y-%m-%d"),',Tagentid,',1,',Tsummoney,',',Tsummoney,')');
- PREPARE stmt FROM @sqlstr;
- EXECUTE stmt;
- DEALLOCATE PREPARE stmt;
- ELSE
- SET @sqlstr=CONCAT('update dw_ltv_agent SET ',TdayFlag,'=',TdayFlag,'+',Tsummoney,', sum_money = sum_money + ',Tsummoney,' WHERE date=FROM_UNIXTIME(',Tregtime,',"%Y-%m-%d") AND agent_id=',Tagentid);
- PREPARE stmt FROM @sqlstr;
- EXECUTE stmt;
- DEALLOCATE PREPARE stmt;
- END IF;
- END IF;
- FETCH Tacursor INTO Tregtime,Tagentid,Tregday,Tsummoney;
- END WHILE;
- CLOSE Tacursor;
- # 游戏LTV
- SET Tflag=0;
- OPEN Tgcursor;
- FETCH Tgcursor INTO Tregtime,Tappid,Tregday,Tsummoney;
- WHILE Tflag<>1 DO
- IF Tregday < 360 THEN
- IF Tregday < 60 THEN
- CASE Tregday
- WHEN 0 THEN
- SET TdayFlag = 'day1';
- WHEN 1 THEN
- SET TdayFlag = 'day2';
- WHEN 2 THEN
- SET TdayFlag = 'day3';
- WHEN 3 THEN
- SET TdayFlag = 'day4';
- WHEN 4 THEN
- SET TdayFlag = 'day5';
- WHEN 5 THEN
- SET TdayFlag = 'day6';
- WHEN 6 THEN
- SET TdayFlag = 'day7';
- WHEN 7 THEN
- SET TdayFlag = 'day8';
- WHEN 8 THEN
- SET TdayFlag = 'day9';
- WHEN 9 THEN
- SET TdayFlag = 'day10';
- WHEN 10 THEN
- SET TdayFlag = 'day11';
- WHEN 11 THEN
- SET TdayFlag = 'day12';
- WHEN 12 THEN
- SET TdayFlag = 'day13';
- WHEN 13 THEN
- SET TdayFlag = 'day14';
- WHEN 14 THEN
- SET TdayFlag = 'day15';
- WHEN 15 THEN
- SET TdayFlag = 'day16';
- WHEN 16 THEN
- SET TdayFlag = 'day17';
- WHEN 17 THEN
- SET TdayFlag = 'day18';
- WHEN 18 THEN
- SET TdayFlag = 'day19';
- WHEN 19 THEN
- SET TdayFlag = 'day20';
- WHEN 20 THEN
- SET TdayFlag = 'day21';
- WHEN 21 THEN
- SET TdayFlag = 'day22';
- WHEN 22 THEN
- SET TdayFlag = 'day23';
- WHEN 23 THEN
- SET TdayFlag = 'day24';
- WHEN 24 THEN
- SET TdayFlag = 'day25';
- WHEN 25 THEN
- SET TdayFlag = 'day26';
- WHEN 26 THEN
- SET TdayFlag = 'day27';
- WHEN 27 THEN
- SET TdayFlag = 'day28';
- WHEN 28 THEN
- SET TdayFlag = 'day29';
- WHEN 29 THEN
- SET TdayFlag = 'day30';
- WHEN 30 THEN
- SET TdayFlag = 'day31';
- WHEN 31 THEN
- SET TdayFlag = 'day32';
- WHEN 32 THEN
- SET TdayFlag = 'day33';
- WHEN 33 THEN
- SET TdayFlag = 'day34';
- WHEN 34 THEN
- SET TdayFlag = 'day35';
- WHEN 35 THEN
- SET TdayFlag = 'day36';
- WHEN 36 THEN
- SET TdayFlag = 'day37';
- WHEN 37 THEN
- SET TdayFlag = 'day38';
- WHEN 38 THEN
- SET TdayFlag = 'day39';
- WHEN 39 THEN
- SET TdayFlag = 'day40';
- WHEN 40 THEN
- SET TdayFlag = 'day41';
- WHEN 41 THEN
- SET TdayFlag = 'day42';
- WHEN 42 THEN
- SET TdayFlag = 'day43';
- WHEN 43 THEN
- SET TdayFlag = 'day44';
- WHEN 44 THEN
- SET TdayFlag = 'day45';
- WHEN 45 THEN
- SET TdayFlag = 'day46';
- WHEN 46 THEN
- SET TdayFlag = 'day47';
- WHEN 47 THEN
- SET TdayFlag = 'day48';
- WHEN 48 THEN
- SET TdayFlag = 'day49';
- WHEN 49 THEN
- SET TdayFlag = 'day50';
- WHEN 50 THEN
- SET TdayFlag = 'day51';
- WHEN 51 THEN
- SET TdayFlag = 'day52';
- WHEN 52 THEN
- SET TdayFlag = 'day53';
- WHEN 53 THEN
- SET TdayFlag = 'day54';
- WHEN 54 THEN
- SET TdayFlag = 'day55';
- WHEN 55 THEN
- SET TdayFlag = 'day56';
- WHEN 56 THEN
- SET TdayFlag = 'day57';
- WHEN 57 THEN
- SET TdayFlag = 'day58';
- WHEN 58 THEN
- SET TdayFlag = 'day59';
- WHEN 59 THEN
- SET TdayFlag = 'day60';
- END CASE;
- ELSEIF Tregday < 90 THEN
- SET TdayFlag = 'day90';
- ELSEIF Tregday < 120 THEN
- SET TdayFlag = 'day120';
- ELSEIF Tregday < 180 THEN
- SET TdayFlag = 'day180';
- ELSEIF Tregday < 270 THEN
- SET TdayFlag = 'day270';
- ELSE
- SET TdayFlag = 'day360';
- END IF;
- #校验数据是否存在
- SELECT IFNULL((SELECT 'Y' from `dw_ltv_game` where `date`=FROM_UNIXTIME(Tregtime,'%Y-%m-%d') AND `app_id`=Tappid limit 1),'N') INTO Tdata_exist;
- IF 'N' = Tdata_exist THEN
- #不存在数据则创建
- SET @sqlstr=CONCAT('INSERT INTO `dw_ltv_game` (`date`,`app_id`,`reg_cnt`,`sum_money`,',TdayFlag,') VALUES (FROM_UNIXTIME(',Tregtime,',"%Y-%m-%d"),',Tappid,',1,',Tsummoney,',',Tsummoney,')');
- PREPARE stmt FROM @sqlstr;
- EXECUTE stmt;
- DEALLOCATE PREPARE stmt;
- ELSE
- SET @sqlstr=CONCAT('update dw_ltv_game SET ',TdayFlag,'=',TdayFlag,'+',Tsummoney,', sum_money = sum_money + ',Tsummoney,' WHERE date=FROM_UNIXTIME(',Tregtime,',"%Y-%m-%d") AND app_id=',Tappid);
- PREPARE stmt FROM @sqlstr;
- EXECUTE stmt;
- DEALLOCATE PREPARE stmt;
- END IF;
- END IF;
- FETCH Tgcursor INTO Tregtime,Tappid,Tregday,Tsummoney;
- END WHILE;
- CLOSE Tgcursor;
- # 每日LTV
- SET Tflag=0;
- OPEN Tcursor;
- FETCH Tcursor INTO Tregtime,Tregday,Tsummoney;
- WHILE Tflag<>1 DO
- IF Tregday < 360 THEN
- IF Tregday < 60 THEN
- CASE Tregday
- WHEN 0 THEN
- SET TdayFlag = 'day1';
- WHEN 1 THEN
- SET TdayFlag = 'day2';
- WHEN 2 THEN
- SET TdayFlag = 'day3';
- WHEN 3 THEN
- SET TdayFlag = 'day4';
- WHEN 4 THEN
- SET TdayFlag = 'day5';
- WHEN 5 THEN
- SET TdayFlag = 'day6';
- WHEN 6 THEN
- SET TdayFlag = 'day7';
- WHEN 7 THEN
- SET TdayFlag = 'day8';
- WHEN 8 THEN
- SET TdayFlag = 'day9';
- WHEN 9 THEN
- SET TdayFlag = 'day10';
- WHEN 10 THEN
- SET TdayFlag = 'day11';
- WHEN 11 THEN
- SET TdayFlag = 'day12';
- WHEN 12 THEN
- SET TdayFlag = 'day13';
- WHEN 13 THEN
- SET TdayFlag = 'day14';
- WHEN 14 THEN
- SET TdayFlag = 'day15';
- WHEN 15 THEN
- SET TdayFlag = 'day16';
- WHEN 16 THEN
- SET TdayFlag = 'day17';
- WHEN 17 THEN
- SET TdayFlag = 'day18';
- WHEN 18 THEN
- SET TdayFlag = 'day19';
- WHEN 19 THEN
- SET TdayFlag = 'day20';
- WHEN 20 THEN
- SET TdayFlag = 'day21';
- WHEN 21 THEN
- SET TdayFlag = 'day22';
- WHEN 22 THEN
- SET TdayFlag = 'day23';
- WHEN 23 THEN
- SET TdayFlag = 'day24';
- WHEN 24 THEN
- SET TdayFlag = 'day25';
- WHEN 25 THEN
- SET TdayFlag = 'day26';
- WHEN 26 THEN
- SET TdayFlag = 'day27';
- WHEN 27 THEN
- SET TdayFlag = 'day28';
- WHEN 28 THEN
- SET TdayFlag = 'day29';
- WHEN 29 THEN
- SET TdayFlag = 'day30';
- WHEN 30 THEN
- SET TdayFlag = 'day31';
- WHEN 31 THEN
- SET TdayFlag = 'day32';
- WHEN 32 THEN
- SET TdayFlag = 'day33';
- WHEN 33 THEN
- SET TdayFlag = 'day34';
- WHEN 34 THEN
- SET TdayFlag = 'day35';
- WHEN 35 THEN
- SET TdayFlag = 'day36';
- WHEN 36 THEN
- SET TdayFlag = 'day37';
- WHEN 37 THEN
- SET TdayFlag = 'day38';
- WHEN 38 THEN
- SET TdayFlag = 'day39';
- WHEN 39 THEN
- SET TdayFlag = 'day40';
- WHEN 40 THEN
- SET TdayFlag = 'day41';
- WHEN 41 THEN
- SET TdayFlag = 'day42';
- WHEN 42 THEN
- SET TdayFlag = 'day43';
- WHEN 43 THEN
- SET TdayFlag = 'day44';
- WHEN 44 THEN
- SET TdayFlag = 'day45';
- WHEN 45 THEN
- SET TdayFlag = 'day46';
- WHEN 46 THEN
- SET TdayFlag = 'day47';
- WHEN 47 THEN
- SET TdayFlag = 'day48';
- WHEN 48 THEN
- SET TdayFlag = 'day49';
- WHEN 49 THEN
- SET TdayFlag = 'day50';
- WHEN 50 THEN
- SET TdayFlag = 'day51';
- WHEN 51 THEN
- SET TdayFlag = 'day52';
- WHEN 52 THEN
- SET TdayFlag = 'day53';
- WHEN 53 THEN
- SET TdayFlag = 'day54';
- WHEN 54 THEN
- SET TdayFlag = 'day55';
- WHEN 55 THEN
- SET TdayFlag = 'day56';
- WHEN 56 THEN
- SET TdayFlag = 'day57';
- WHEN 57 THEN
- SET TdayFlag = 'day58';
- WHEN 58 THEN
- SET TdayFlag = 'day59';
- WHEN 59 THEN
- SET TdayFlag = 'day60';
- END CASE;
- ELSEIF Tregday < 90 THEN
- SET TdayFlag = 'day90';
- ELSEIF Tregday < 120 THEN
- SET TdayFlag = 'day120';
- ELSEIF Tregday < 180 THEN
- SET TdayFlag = 'day180';
- ELSEIF Tregday < 270 THEN
- SET TdayFlag = 'day270';
- ELSE
- SET TdayFlag = 'day360';
- END IF;
- #校验数据是否存在
- SELECT IFNULL((SELECT 'Y' from `dw_ltv_day` where `date`=FROM_UNIXTIME(Tregtime,'%Y-%m-%d') limit 1),'N') INTO Tdata_exist;
- IF 'N' = Tdata_exist THEN
- #不存在数据则创建
- SET @sqlstr=CONCAT('INSERT INTO `dw_ltv_day` (`date`,`reg_cnt`,`sum_money`,',TdayFlag,') VALUES (FROM_UNIXTIME(',Tregtime,',"%Y-%m-%d"),1,',Tsummoney,',',Tsummoney,')');
- PREPARE stmt FROM @sqlstr;
- EXECUTE stmt;
- DEALLOCATE PREPARE stmt;
- ELSE
- SET @sqlstr=CONCAT('update dw_ltv_day SET ',TdayFlag,'=',TdayFlag,'+',Tsummoney,', sum_money = sum_money + ',Tsummoney,' WHERE date=FROM_UNIXTIME(',Tregtime,',"%Y-%m-%d")');
- PREPARE stmt FROM @sqlstr;
- EXECUTE stmt;
- DEALLOCATE PREPARE stmt;
- END IF;
- END IF;
- FETCH Tcursor INTO Tregtime,Tregday,Tsummoney;
- END WHILE;
- CLOSE Tcursor;
- END
|