runltv.sql 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819
  1. CREATE DEFINER=`root`@`127.0.0.1` PROCEDURE `runltv`(IN `iday` date)
  2. BEGIN
  3. DECLARE Tflag INT DEFAULT 0;
  4. DECLARE Tappid INT;
  5. DECLARE Tdate DATE;
  6. DECLARE Tregtime INT;
  7. DECLARE Tregday INT;
  8. DECLARE Tagentid INT;
  9. DECLARE Tmobile_prefix INT DEFAULT 156;
  10. DECLARE Tregcnt INT;
  11. DECLARE Tsummoney DECIMAL(12,2);
  12. DECLARE Tsetdate DATE DEFAULT iday;
  13. DECLARE Tstarttime INT;
  14. DECLARE Tendtime INT;
  15. DECLARE TdayFlag varchar(20);
  16. DECLARE Tdata_exist CHAR(2);
  17. DECLARE TformatDate DATE DEFAULT date_format(Tsetdate,'%Y-%m-%d');
  18. # 渠道游戏
  19. 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;
  20. # 渠道
  21. 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;
  22. # 游戏
  23. 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;
  24. # 每日
  25. 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;
  26. DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET Tflag = 1;
  27. SET Tstarttime=unix_timestamp(Tsetdate);
  28. SET Tendtime=Tstarttime+86400;
  29. SET @Ttable = CONCAT('db_sdk_test_log.log_day_mem_',date_format(Tsetdate,'%Y%m') );
  30. #判断是否存在临时表
  31. CREATE TABLE IF NOT EXISTS `log_ltv_day_mem_temp` (
  32. `id` int(11) NOT NULL AUTO_INCREMENT,
  33. `date` date NOT NULL DEFAULT '0000-00-00' COMMENT '日期',
  34. `mem_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '玩家ID',
  35. `agent_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '归属渠道',
  36. `app_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '游戏ID',
  37. `reg_time` bigint(11) NOT NULL DEFAULT '0' COMMENT '玩家注册时间',
  38. `reg_days` int(11) NOT NULL DEFAULT '0' COMMENT '注册天数',
  39. `device_id` varchar(64) NOT NULL DEFAULT '' COMMENT '手机设备码',
  40. `sum_money` double(12,2) NOT NULL DEFAULT '0.00' COMMENT '累计充值',
  41. `sum_real_money` double(12,2) NOT NULL DEFAULT '0.00' COMMENT '自然流水金额',
  42. PRIMARY KEY (`id`),
  43. UNIQUE KEY `lldmt_date_mem_app_unique` (`date`,`mem_id`,`app_id`),
  44. KEY `ldmt_agent_index` (`agent_id`),
  45. KEY `ldmt_app_index` (`app_id`)
  46. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='ltv玩家每日临时';
  47. #清除数据
  48. TRUNCATE `log_ltv_day_mem_temp`;
  49. ALTER TABLE `log_ltv_day_mem_temp` DISABLE KEYS;
  50. 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`";
  51. SET @ldmt_sql = concat(@ldmt_sql, ' FROM ',@Ttable,' where `date`=\'',Tsetdate,'\'');
  52. PREPARE ldmt_sql_ex FROM @ldmt_sql;
  53. EXECUTE ldmt_sql_ex;
  54. ALTER TABLE log_ltv_day_mem_temp ENABLE KEYS;
  55. DROP TABLE IF EXISTS log_ldgac_temp;
  56. CREATE TABLE IF NOT EXISTS `log_ldgac_temp` (
  57. `id` int(11) NOT NULL AUTO_INCREMENT,
  58. `date` date NOT NULL DEFAULT '0000-00-00' COMMENT '日期',
  59. `app_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '游戏ID',
  60. `agent_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '渠道ID',
  61. `reg_cnt` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '注册玩家数',
  62. `sum_money` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT '充值金额',
  63. `sum_real_money` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT '自然流水金额',
  64. PRIMARY KEY (`id`) USING BTREE,
  65. UNIQUE KEY `dga_dga_unique` (`date`,`app_id`,`agent_id`) USING BTREE,
  66. KEY `dga_game_index` (`app_id`) USING BTREE,
  67. KEY `dga_agent_index` (`agent_id`) USING BTREE
  68. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='ltv每日游戏推广员统计表';
  69. #写入每日临时
  70. TRUNCATE `log_ldgac_temp`;
  71. ALTER TABLE log_ldgac_temp DISABLE KEYS;
  72. REPLACE INTO `log_ldgac_temp`
  73. (
  74. `date`,
  75. `app_id`,
  76. `agent_id`,
  77. `reg_cnt`,
  78. `sum_money`,
  79. `sum_real_money`
  80. )
  81. SELECT
  82. IFNULL(lldmt.`date`,TformatDate) AS `date`,
  83. IFNULL(lldmt.`app_id`,0) AS `app_id`,
  84. IFNULL(lldmt.`agent_id`,0) AS `agent_id`,
  85. COUNT(DISTINCT(CASE WHEN lldmt.`reg_days`=0 AND lldmt.`mem_id` > 0 THEN `mem_id` END)) AS `reg_cnt` ,
  86. IFNULL(SUM(lldmt.`sum_money`),0) AS `sum_money` ,
  87. SUM(lldmt.`sum_real_money`) AS `sum_real_money`
  88. FROM log_ltv_day_mem_temp lldmt
  89. GROUP BY agent_id, app_id;
  90. ALTER TABLE log_ldgac_temp ENABLE KEYS;
  91. #每日游戏推广统计表
  92. ALTER TABLE dw_ltv_game_agent DISABLE KEYS;
  93. REPLACE INTO `dw_ltv_game_agent`
  94. (
  95. `date`,
  96. `app_id`,
  97. `agent_id`,
  98. `reg_cnt`
  99. )
  100. SELECT
  101. IFNULL(`date`,TformatDate) AS `date`,
  102. IFNULL(`app_id`,0) AS `app_id`,
  103. IFNULL(`agent_id`,0) AS `agent_id`,
  104. IFNULL(`reg_cnt`,0) AS `reg_cnt`
  105. FROM log_ldgac_temp
  106. WHERE `reg_cnt`>0;
  107. ALTER TABLE dw_ltv_game_agent ENABLE KEYS;
  108. #每日推广员统计表
  109. ALTER TABLE dw_ltv_agent DISABLE KEYS;
  110. REPLACE INTO `dw_ltv_agent`
  111. (
  112. `date`,
  113. `agent_id`,
  114. `reg_cnt`
  115. )
  116. SELECT
  117. IFNULL(ldmt.`date`,TformatDate) AS `date`,
  118. ldmt.`agent_id` AS `agent_id`,
  119. COUNT(DISTINCT(CASE WHEN ldmt.`reg_days`=0 AND ldmt.`mem_id` > 0 THEN `mem_id` END)) AS `reg_cnt`
  120. FROM log_ltv_day_mem_temp ldmt
  121. WHERE ldmt.`reg_days` = 0 AND ldmt.`mem_id` > 0
  122. GROUP BY agent_id;
  123. ALTER TABLE dw_ltv_agent ENABLE KEYS;
  124. #每日游戏统计表
  125. ALTER TABLE dw_ltv_game DISABLE KEYS;
  126. REPLACE INTO `dw_ltv_game`
  127. (
  128. `date`,
  129. `app_id`,
  130. `reg_cnt`
  131. )
  132. SELECT
  133. IFNULL(`date`,TformatDate) AS `date`,
  134. IFNULL(`app_id`,0) AS `app_id`,
  135. SUM(`reg_cnt`) AS `reg_cnt`
  136. FROM log_ldgac_temp
  137. WHERE `reg_cnt`>0
  138. GROUP BY app_id;
  139. ALTER TABLE dw_ltv_game ENABLE KEYS;
  140. #每日统计表
  141. ALTER TABLE dw_ltv_day DISABLE KEYS;
  142. REPLACE INTO `dw_ltv_day`
  143. (
  144. `date`,
  145. `reg_cnt`
  146. )
  147. SELECT
  148. IFNULL(ldmt.`date`,TformatDate) AS `date`,
  149. COUNT(DISTINCT(CASE WHEN ldmt.`reg_days`=0 AND ldmt.`mem_id` > 0 THEN `mem_id` END)) AS `reg_cnt`
  150. FROM log_ltv_day_mem_temp ldmt
  151. WHERE ldmt.`reg_days` = 0 AND ldmt.`mem_id` > 0;
  152. ALTER TABLE dw_ltv_day ENABLE KEYS;
  153. # 渠道游戏LTV
  154. SET Tflag=0;
  155. OPEN Tagcursor;
  156. FETCH Tagcursor INTO Tregtime,Tappid,Tagentid,Tregday,Tsummoney;
  157. WHILE Tflag<>1 DO
  158. IF Tregday < 360 THEN
  159. IF Tregday < 60 THEN
  160. CASE Tregday
  161. WHEN 0 THEN
  162. SET TdayFlag = 'day1';
  163. WHEN 1 THEN
  164. SET TdayFlag = 'day2';
  165. WHEN 2 THEN
  166. SET TdayFlag = 'day3';
  167. WHEN 3 THEN
  168. SET TdayFlag = 'day4';
  169. WHEN 4 THEN
  170. SET TdayFlag = 'day5';
  171. WHEN 5 THEN
  172. SET TdayFlag = 'day6';
  173. WHEN 6 THEN
  174. SET TdayFlag = 'day7';
  175. WHEN 7 THEN
  176. SET TdayFlag = 'day8';
  177. WHEN 8 THEN
  178. SET TdayFlag = 'day9';
  179. WHEN 9 THEN
  180. SET TdayFlag = 'day10';
  181. WHEN 10 THEN
  182. SET TdayFlag = 'day11';
  183. WHEN 11 THEN
  184. SET TdayFlag = 'day12';
  185. WHEN 12 THEN
  186. SET TdayFlag = 'day13';
  187. WHEN 13 THEN
  188. SET TdayFlag = 'day14';
  189. WHEN 14 THEN
  190. SET TdayFlag = 'day15';
  191. WHEN 15 THEN
  192. SET TdayFlag = 'day16';
  193. WHEN 16 THEN
  194. SET TdayFlag = 'day17';
  195. WHEN 17 THEN
  196. SET TdayFlag = 'day18';
  197. WHEN 18 THEN
  198. SET TdayFlag = 'day19';
  199. WHEN 19 THEN
  200. SET TdayFlag = 'day20';
  201. WHEN 20 THEN
  202. SET TdayFlag = 'day21';
  203. WHEN 21 THEN
  204. SET TdayFlag = 'day22';
  205. WHEN 22 THEN
  206. SET TdayFlag = 'day23';
  207. WHEN 23 THEN
  208. SET TdayFlag = 'day24';
  209. WHEN 24 THEN
  210. SET TdayFlag = 'day25';
  211. WHEN 25 THEN
  212. SET TdayFlag = 'day26';
  213. WHEN 26 THEN
  214. SET TdayFlag = 'day27';
  215. WHEN 27 THEN
  216. SET TdayFlag = 'day28';
  217. WHEN 28 THEN
  218. SET TdayFlag = 'day29';
  219. WHEN 29 THEN
  220. SET TdayFlag = 'day30';
  221. WHEN 30 THEN
  222. SET TdayFlag = 'day31';
  223. WHEN 31 THEN
  224. SET TdayFlag = 'day32';
  225. WHEN 32 THEN
  226. SET TdayFlag = 'day33';
  227. WHEN 33 THEN
  228. SET TdayFlag = 'day34';
  229. WHEN 34 THEN
  230. SET TdayFlag = 'day35';
  231. WHEN 35 THEN
  232. SET TdayFlag = 'day36';
  233. WHEN 36 THEN
  234. SET TdayFlag = 'day37';
  235. WHEN 37 THEN
  236. SET TdayFlag = 'day38';
  237. WHEN 38 THEN
  238. SET TdayFlag = 'day39';
  239. WHEN 39 THEN
  240. SET TdayFlag = 'day40';
  241. WHEN 40 THEN
  242. SET TdayFlag = 'day41';
  243. WHEN 41 THEN
  244. SET TdayFlag = 'day42';
  245. WHEN 42 THEN
  246. SET TdayFlag = 'day43';
  247. WHEN 43 THEN
  248. SET TdayFlag = 'day44';
  249. WHEN 44 THEN
  250. SET TdayFlag = 'day45';
  251. WHEN 45 THEN
  252. SET TdayFlag = 'day46';
  253. WHEN 46 THEN
  254. SET TdayFlag = 'day47';
  255. WHEN 47 THEN
  256. SET TdayFlag = 'day48';
  257. WHEN 48 THEN
  258. SET TdayFlag = 'day49';
  259. WHEN 49 THEN
  260. SET TdayFlag = 'day50';
  261. WHEN 50 THEN
  262. SET TdayFlag = 'day51';
  263. WHEN 51 THEN
  264. SET TdayFlag = 'day52';
  265. WHEN 52 THEN
  266. SET TdayFlag = 'day53';
  267. WHEN 53 THEN
  268. SET TdayFlag = 'day54';
  269. WHEN 54 THEN
  270. SET TdayFlag = 'day55';
  271. WHEN 55 THEN
  272. SET TdayFlag = 'day56';
  273. WHEN 56 THEN
  274. SET TdayFlag = 'day57';
  275. WHEN 57 THEN
  276. SET TdayFlag = 'day58';
  277. WHEN 58 THEN
  278. SET TdayFlag = 'day59';
  279. WHEN 59 THEN
  280. SET TdayFlag = 'day60';
  281. END CASE;
  282. ELSEIF Tregday < 90 THEN
  283. SET TdayFlag = 'day90';
  284. ELSEIF Tregday < 120 THEN
  285. SET TdayFlag = 'day120';
  286. ELSEIF Tregday < 180 THEN
  287. SET TdayFlag = 'day180';
  288. ELSEIF Tregday < 270 THEN
  289. SET TdayFlag = 'day270';
  290. ELSE
  291. SET TdayFlag = 'day360';
  292. END IF;
  293. #校验数据是否存在
  294. 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;
  295. IF 'N' = Tdata_exist THEN
  296. #不存在数据则创建
  297. 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,')');
  298. PREPARE stmt FROM @sqlstr;
  299. EXECUTE stmt;
  300. DEALLOCATE PREPARE stmt;
  301. ELSE
  302. 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);
  303. PREPARE stmt FROM @sqlstr;
  304. EXECUTE stmt;
  305. DEALLOCATE PREPARE stmt;
  306. END IF;
  307. END IF;
  308. FETCH Tagcursor INTO Tregtime,Tappid,Tagentid,Tregday,Tsummoney;
  309. END WHILE;
  310. CLOSE Tagcursor;
  311. # 渠道LTV
  312. SET Tflag=0;
  313. OPEN Tacursor;
  314. FETCH Tacursor INTO Tregtime,Tagentid,Tregday,Tsummoney;
  315. WHILE Tflag<>1 DO
  316. IF Tregday < 360 THEN
  317. IF Tregday < 60 THEN
  318. CASE Tregday
  319. WHEN 0 THEN
  320. SET TdayFlag = 'day1';
  321. WHEN 1 THEN
  322. SET TdayFlag = 'day2';
  323. WHEN 2 THEN
  324. SET TdayFlag = 'day3';
  325. WHEN 3 THEN
  326. SET TdayFlag = 'day4';
  327. WHEN 4 THEN
  328. SET TdayFlag = 'day5';
  329. WHEN 5 THEN
  330. SET TdayFlag = 'day6';
  331. WHEN 6 THEN
  332. SET TdayFlag = 'day7';
  333. WHEN 7 THEN
  334. SET TdayFlag = 'day8';
  335. WHEN 8 THEN
  336. SET TdayFlag = 'day9';
  337. WHEN 9 THEN
  338. SET TdayFlag = 'day10';
  339. WHEN 10 THEN
  340. SET TdayFlag = 'day11';
  341. WHEN 11 THEN
  342. SET TdayFlag = 'day12';
  343. WHEN 12 THEN
  344. SET TdayFlag = 'day13';
  345. WHEN 13 THEN
  346. SET TdayFlag = 'day14';
  347. WHEN 14 THEN
  348. SET TdayFlag = 'day15';
  349. WHEN 15 THEN
  350. SET TdayFlag = 'day16';
  351. WHEN 16 THEN
  352. SET TdayFlag = 'day17';
  353. WHEN 17 THEN
  354. SET TdayFlag = 'day18';
  355. WHEN 18 THEN
  356. SET TdayFlag = 'day19';
  357. WHEN 19 THEN
  358. SET TdayFlag = 'day20';
  359. WHEN 20 THEN
  360. SET TdayFlag = 'day21';
  361. WHEN 21 THEN
  362. SET TdayFlag = 'day22';
  363. WHEN 22 THEN
  364. SET TdayFlag = 'day23';
  365. WHEN 23 THEN
  366. SET TdayFlag = 'day24';
  367. WHEN 24 THEN
  368. SET TdayFlag = 'day25';
  369. WHEN 25 THEN
  370. SET TdayFlag = 'day26';
  371. WHEN 26 THEN
  372. SET TdayFlag = 'day27';
  373. WHEN 27 THEN
  374. SET TdayFlag = 'day28';
  375. WHEN 28 THEN
  376. SET TdayFlag = 'day29';
  377. WHEN 29 THEN
  378. SET TdayFlag = 'day30';
  379. WHEN 30 THEN
  380. SET TdayFlag = 'day31';
  381. WHEN 31 THEN
  382. SET TdayFlag = 'day32';
  383. WHEN 32 THEN
  384. SET TdayFlag = 'day33';
  385. WHEN 33 THEN
  386. SET TdayFlag = 'day34';
  387. WHEN 34 THEN
  388. SET TdayFlag = 'day35';
  389. WHEN 35 THEN
  390. SET TdayFlag = 'day36';
  391. WHEN 36 THEN
  392. SET TdayFlag = 'day37';
  393. WHEN 37 THEN
  394. SET TdayFlag = 'day38';
  395. WHEN 38 THEN
  396. SET TdayFlag = 'day39';
  397. WHEN 39 THEN
  398. SET TdayFlag = 'day40';
  399. WHEN 40 THEN
  400. SET TdayFlag = 'day41';
  401. WHEN 41 THEN
  402. SET TdayFlag = 'day42';
  403. WHEN 42 THEN
  404. SET TdayFlag = 'day43';
  405. WHEN 43 THEN
  406. SET TdayFlag = 'day44';
  407. WHEN 44 THEN
  408. SET TdayFlag = 'day45';
  409. WHEN 45 THEN
  410. SET TdayFlag = 'day46';
  411. WHEN 46 THEN
  412. SET TdayFlag = 'day47';
  413. WHEN 47 THEN
  414. SET TdayFlag = 'day48';
  415. WHEN 48 THEN
  416. SET TdayFlag = 'day49';
  417. WHEN 49 THEN
  418. SET TdayFlag = 'day50';
  419. WHEN 50 THEN
  420. SET TdayFlag = 'day51';
  421. WHEN 51 THEN
  422. SET TdayFlag = 'day52';
  423. WHEN 52 THEN
  424. SET TdayFlag = 'day53';
  425. WHEN 53 THEN
  426. SET TdayFlag = 'day54';
  427. WHEN 54 THEN
  428. SET TdayFlag = 'day55';
  429. WHEN 55 THEN
  430. SET TdayFlag = 'day56';
  431. WHEN 56 THEN
  432. SET TdayFlag = 'day57';
  433. WHEN 57 THEN
  434. SET TdayFlag = 'day58';
  435. WHEN 58 THEN
  436. SET TdayFlag = 'day59';
  437. WHEN 59 THEN
  438. SET TdayFlag = 'day60';
  439. END CASE;
  440. ELSEIF Tregday < 90 THEN
  441. SET TdayFlag = 'day90';
  442. ELSEIF Tregday < 120 THEN
  443. SET TdayFlag = 'day120';
  444. ELSEIF Tregday < 180 THEN
  445. SET TdayFlag = 'day180';
  446. ELSEIF Tregday < 270 THEN
  447. SET TdayFlag = 'day270';
  448. ELSE
  449. SET TdayFlag = 'day360';
  450. END IF;
  451. #校验数据是否存在
  452. 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;
  453. IF 'N' = Tdata_exist THEN
  454. #不存在数据则创建
  455. 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,')');
  456. PREPARE stmt FROM @sqlstr;
  457. EXECUTE stmt;
  458. DEALLOCATE PREPARE stmt;
  459. ELSE
  460. 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);
  461. PREPARE stmt FROM @sqlstr;
  462. EXECUTE stmt;
  463. DEALLOCATE PREPARE stmt;
  464. END IF;
  465. END IF;
  466. FETCH Tacursor INTO Tregtime,Tagentid,Tregday,Tsummoney;
  467. END WHILE;
  468. CLOSE Tacursor;
  469. # 游戏LTV
  470. SET Tflag=0;
  471. OPEN Tgcursor;
  472. FETCH Tgcursor INTO Tregtime,Tappid,Tregday,Tsummoney;
  473. WHILE Tflag<>1 DO
  474. IF Tregday < 360 THEN
  475. IF Tregday < 60 THEN
  476. CASE Tregday
  477. WHEN 0 THEN
  478. SET TdayFlag = 'day1';
  479. WHEN 1 THEN
  480. SET TdayFlag = 'day2';
  481. WHEN 2 THEN
  482. SET TdayFlag = 'day3';
  483. WHEN 3 THEN
  484. SET TdayFlag = 'day4';
  485. WHEN 4 THEN
  486. SET TdayFlag = 'day5';
  487. WHEN 5 THEN
  488. SET TdayFlag = 'day6';
  489. WHEN 6 THEN
  490. SET TdayFlag = 'day7';
  491. WHEN 7 THEN
  492. SET TdayFlag = 'day8';
  493. WHEN 8 THEN
  494. SET TdayFlag = 'day9';
  495. WHEN 9 THEN
  496. SET TdayFlag = 'day10';
  497. WHEN 10 THEN
  498. SET TdayFlag = 'day11';
  499. WHEN 11 THEN
  500. SET TdayFlag = 'day12';
  501. WHEN 12 THEN
  502. SET TdayFlag = 'day13';
  503. WHEN 13 THEN
  504. SET TdayFlag = 'day14';
  505. WHEN 14 THEN
  506. SET TdayFlag = 'day15';
  507. WHEN 15 THEN
  508. SET TdayFlag = 'day16';
  509. WHEN 16 THEN
  510. SET TdayFlag = 'day17';
  511. WHEN 17 THEN
  512. SET TdayFlag = 'day18';
  513. WHEN 18 THEN
  514. SET TdayFlag = 'day19';
  515. WHEN 19 THEN
  516. SET TdayFlag = 'day20';
  517. WHEN 20 THEN
  518. SET TdayFlag = 'day21';
  519. WHEN 21 THEN
  520. SET TdayFlag = 'day22';
  521. WHEN 22 THEN
  522. SET TdayFlag = 'day23';
  523. WHEN 23 THEN
  524. SET TdayFlag = 'day24';
  525. WHEN 24 THEN
  526. SET TdayFlag = 'day25';
  527. WHEN 25 THEN
  528. SET TdayFlag = 'day26';
  529. WHEN 26 THEN
  530. SET TdayFlag = 'day27';
  531. WHEN 27 THEN
  532. SET TdayFlag = 'day28';
  533. WHEN 28 THEN
  534. SET TdayFlag = 'day29';
  535. WHEN 29 THEN
  536. SET TdayFlag = 'day30';
  537. WHEN 30 THEN
  538. SET TdayFlag = 'day31';
  539. WHEN 31 THEN
  540. SET TdayFlag = 'day32';
  541. WHEN 32 THEN
  542. SET TdayFlag = 'day33';
  543. WHEN 33 THEN
  544. SET TdayFlag = 'day34';
  545. WHEN 34 THEN
  546. SET TdayFlag = 'day35';
  547. WHEN 35 THEN
  548. SET TdayFlag = 'day36';
  549. WHEN 36 THEN
  550. SET TdayFlag = 'day37';
  551. WHEN 37 THEN
  552. SET TdayFlag = 'day38';
  553. WHEN 38 THEN
  554. SET TdayFlag = 'day39';
  555. WHEN 39 THEN
  556. SET TdayFlag = 'day40';
  557. WHEN 40 THEN
  558. SET TdayFlag = 'day41';
  559. WHEN 41 THEN
  560. SET TdayFlag = 'day42';
  561. WHEN 42 THEN
  562. SET TdayFlag = 'day43';
  563. WHEN 43 THEN
  564. SET TdayFlag = 'day44';
  565. WHEN 44 THEN
  566. SET TdayFlag = 'day45';
  567. WHEN 45 THEN
  568. SET TdayFlag = 'day46';
  569. WHEN 46 THEN
  570. SET TdayFlag = 'day47';
  571. WHEN 47 THEN
  572. SET TdayFlag = 'day48';
  573. WHEN 48 THEN
  574. SET TdayFlag = 'day49';
  575. WHEN 49 THEN
  576. SET TdayFlag = 'day50';
  577. WHEN 50 THEN
  578. SET TdayFlag = 'day51';
  579. WHEN 51 THEN
  580. SET TdayFlag = 'day52';
  581. WHEN 52 THEN
  582. SET TdayFlag = 'day53';
  583. WHEN 53 THEN
  584. SET TdayFlag = 'day54';
  585. WHEN 54 THEN
  586. SET TdayFlag = 'day55';
  587. WHEN 55 THEN
  588. SET TdayFlag = 'day56';
  589. WHEN 56 THEN
  590. SET TdayFlag = 'day57';
  591. WHEN 57 THEN
  592. SET TdayFlag = 'day58';
  593. WHEN 58 THEN
  594. SET TdayFlag = 'day59';
  595. WHEN 59 THEN
  596. SET TdayFlag = 'day60';
  597. END CASE;
  598. ELSEIF Tregday < 90 THEN
  599. SET TdayFlag = 'day90';
  600. ELSEIF Tregday < 120 THEN
  601. SET TdayFlag = 'day120';
  602. ELSEIF Tregday < 180 THEN
  603. SET TdayFlag = 'day180';
  604. ELSEIF Tregday < 270 THEN
  605. SET TdayFlag = 'day270';
  606. ELSE
  607. SET TdayFlag = 'day360';
  608. END IF;
  609. #校验数据是否存在
  610. 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;
  611. IF 'N' = Tdata_exist THEN
  612. #不存在数据则创建
  613. 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,')');
  614. PREPARE stmt FROM @sqlstr;
  615. EXECUTE stmt;
  616. DEALLOCATE PREPARE stmt;
  617. ELSE
  618. 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);
  619. PREPARE stmt FROM @sqlstr;
  620. EXECUTE stmt;
  621. DEALLOCATE PREPARE stmt;
  622. END IF;
  623. END IF;
  624. FETCH Tgcursor INTO Tregtime,Tappid,Tregday,Tsummoney;
  625. END WHILE;
  626. CLOSE Tgcursor;
  627. # 每日LTV
  628. SET Tflag=0;
  629. OPEN Tcursor;
  630. FETCH Tcursor INTO Tregtime,Tregday,Tsummoney;
  631. WHILE Tflag<>1 DO
  632. IF Tregday < 360 THEN
  633. IF Tregday < 60 THEN
  634. CASE Tregday
  635. WHEN 0 THEN
  636. SET TdayFlag = 'day1';
  637. WHEN 1 THEN
  638. SET TdayFlag = 'day2';
  639. WHEN 2 THEN
  640. SET TdayFlag = 'day3';
  641. WHEN 3 THEN
  642. SET TdayFlag = 'day4';
  643. WHEN 4 THEN
  644. SET TdayFlag = 'day5';
  645. WHEN 5 THEN
  646. SET TdayFlag = 'day6';
  647. WHEN 6 THEN
  648. SET TdayFlag = 'day7';
  649. WHEN 7 THEN
  650. SET TdayFlag = 'day8';
  651. WHEN 8 THEN
  652. SET TdayFlag = 'day9';
  653. WHEN 9 THEN
  654. SET TdayFlag = 'day10';
  655. WHEN 10 THEN
  656. SET TdayFlag = 'day11';
  657. WHEN 11 THEN
  658. SET TdayFlag = 'day12';
  659. WHEN 12 THEN
  660. SET TdayFlag = 'day13';
  661. WHEN 13 THEN
  662. SET TdayFlag = 'day14';
  663. WHEN 14 THEN
  664. SET TdayFlag = 'day15';
  665. WHEN 15 THEN
  666. SET TdayFlag = 'day16';
  667. WHEN 16 THEN
  668. SET TdayFlag = 'day17';
  669. WHEN 17 THEN
  670. SET TdayFlag = 'day18';
  671. WHEN 18 THEN
  672. SET TdayFlag = 'day19';
  673. WHEN 19 THEN
  674. SET TdayFlag = 'day20';
  675. WHEN 20 THEN
  676. SET TdayFlag = 'day21';
  677. WHEN 21 THEN
  678. SET TdayFlag = 'day22';
  679. WHEN 22 THEN
  680. SET TdayFlag = 'day23';
  681. WHEN 23 THEN
  682. SET TdayFlag = 'day24';
  683. WHEN 24 THEN
  684. SET TdayFlag = 'day25';
  685. WHEN 25 THEN
  686. SET TdayFlag = 'day26';
  687. WHEN 26 THEN
  688. SET TdayFlag = 'day27';
  689. WHEN 27 THEN
  690. SET TdayFlag = 'day28';
  691. WHEN 28 THEN
  692. SET TdayFlag = 'day29';
  693. WHEN 29 THEN
  694. SET TdayFlag = 'day30';
  695. WHEN 30 THEN
  696. SET TdayFlag = 'day31';
  697. WHEN 31 THEN
  698. SET TdayFlag = 'day32';
  699. WHEN 32 THEN
  700. SET TdayFlag = 'day33';
  701. WHEN 33 THEN
  702. SET TdayFlag = 'day34';
  703. WHEN 34 THEN
  704. SET TdayFlag = 'day35';
  705. WHEN 35 THEN
  706. SET TdayFlag = 'day36';
  707. WHEN 36 THEN
  708. SET TdayFlag = 'day37';
  709. WHEN 37 THEN
  710. SET TdayFlag = 'day38';
  711. WHEN 38 THEN
  712. SET TdayFlag = 'day39';
  713. WHEN 39 THEN
  714. SET TdayFlag = 'day40';
  715. WHEN 40 THEN
  716. SET TdayFlag = 'day41';
  717. WHEN 41 THEN
  718. SET TdayFlag = 'day42';
  719. WHEN 42 THEN
  720. SET TdayFlag = 'day43';
  721. WHEN 43 THEN
  722. SET TdayFlag = 'day44';
  723. WHEN 44 THEN
  724. SET TdayFlag = 'day45';
  725. WHEN 45 THEN
  726. SET TdayFlag = 'day46';
  727. WHEN 46 THEN
  728. SET TdayFlag = 'day47';
  729. WHEN 47 THEN
  730. SET TdayFlag = 'day48';
  731. WHEN 48 THEN
  732. SET TdayFlag = 'day49';
  733. WHEN 49 THEN
  734. SET TdayFlag = 'day50';
  735. WHEN 50 THEN
  736. SET TdayFlag = 'day51';
  737. WHEN 51 THEN
  738. SET TdayFlag = 'day52';
  739. WHEN 52 THEN
  740. SET TdayFlag = 'day53';
  741. WHEN 53 THEN
  742. SET TdayFlag = 'day54';
  743. WHEN 54 THEN
  744. SET TdayFlag = 'day55';
  745. WHEN 55 THEN
  746. SET TdayFlag = 'day56';
  747. WHEN 56 THEN
  748. SET TdayFlag = 'day57';
  749. WHEN 57 THEN
  750. SET TdayFlag = 'day58';
  751. WHEN 58 THEN
  752. SET TdayFlag = 'day59';
  753. WHEN 59 THEN
  754. SET TdayFlag = 'day60';
  755. END CASE;
  756. ELSEIF Tregday < 90 THEN
  757. SET TdayFlag = 'day90';
  758. ELSEIF Tregday < 120 THEN
  759. SET TdayFlag = 'day120';
  760. ELSEIF Tregday < 180 THEN
  761. SET TdayFlag = 'day180';
  762. ELSEIF Tregday < 270 THEN
  763. SET TdayFlag = 'day270';
  764. ELSE
  765. SET TdayFlag = 'day360';
  766. END IF;
  767. #校验数据是否存在
  768. SELECT IFNULL((SELECT 'Y' from `dw_ltv_day` where `date`=FROM_UNIXTIME(Tregtime,'%Y-%m-%d') limit 1),'N') INTO Tdata_exist;
  769. IF 'N' = Tdata_exist THEN
  770. #不存在数据则创建
  771. SET @sqlstr=CONCAT('INSERT INTO `dw_ltv_day` (`date`,`reg_cnt`,`sum_money`,',TdayFlag,') VALUES (FROM_UNIXTIME(',Tregtime,',"%Y-%m-%d"),1,',Tsummoney,',',Tsummoney,')');
  772. PREPARE stmt FROM @sqlstr;
  773. EXECUTE stmt;
  774. DEALLOCATE PREPARE stmt;
  775. ELSE
  776. SET @sqlstr=CONCAT('update dw_ltv_day SET ',TdayFlag,'=',TdayFlag,'+',Tsummoney,', sum_money = sum_money + ',Tsummoney,' WHERE date=FROM_UNIXTIME(',Tregtime,',"%Y-%m-%d")');
  777. PREPARE stmt FROM @sqlstr;
  778. EXECUTE stmt;
  779. DEALLOCATE PREPARE stmt;
  780. END IF;
  781. END IF;
  782. FETCH Tcursor INTO Tregtime,Tregday,Tsummoney;
  783. END WHILE;
  784. CLOSE Tcursor;
  785. END