0 0

我又来了。还是关于Mysql的统计问题0

我要查询用户的1234567日留存。以前做出来了。但是需求改了,蛋有点疼,之前是查前七天,下载是要查今天登录的在以后的天数,所以涉及到修改。我这个循环为什么只是循环两遍?数据不对不对不对不对。。。。这样写会不会出问题啊?
begin
declare i int;
declare numareaId int(10);
declare currentareaId int(10);
SELECT COUNT(areaId),MIN(areaId) INTO @a,@b FROM option_area_info;

SET numareaId=@a;
SET currentareaId=@b;

loop1:WHILE numareaId>0 DO
SET @AID = currentareaId;

SET i=1;
while i<=7 do
  if exists(select * from statistics_player_l where createTime>=date_sub(curdate(),interval i day) and createTime<date_sub(curdate(),interval i-1 day) and areaId=@AID) then
update statistics_player_l set oneDayPlayer= (select((select count(distinct playerId) from log_login where registerTime=date_sub(curdate(),interval i day) and loginTime>=current_date() and loginTime<date_add(curdate(),interval 1 day) and areaId=@AID)/(select count(distinct playerId) from log_login where registerTime=date_sub(curdate(),interval i day) and areaId=@AID))*100) where createTime>=date_sub(curdate(),interval i day) and createTime<current_date();
update statistics_player_l set twoDayPlayer= (select((select count(distinct playerId) from log_login where registerTime=date_sub(curdate(),interval i+1 day) and loginTime>=current_date() and loginTime<date_add(curdate(),interval 1 day) and areaId=@AID)/(select count(distinct playerId) from log_login where registerTime=date_sub(curdate(),interval i+1 day) and areaId=@AID))*100) where createTime>=date_sub(curdate(),interval i day) and createTime<date_sub(curdate(),interval i-1 day);
update statistics_player_l set threeDayPlayer=(select((select count(distinct playerId) from log_login where registerTime=date_sub(curdate(),interval i+2 day) and loginTime>=current_date() and loginTime<date_add(curdate(),interval 1 day) and areaId=@AID)/(select count(distinct playerId) from log_login where registerTime=date_sub(curdate(),interval i+2 day) and areaId=@AID))*100) where createTime>=date_sub(curdate(),interval i day) and createTime<date_sub(curdate(),interval i-1 day);
update statistics_player_l set fourDayPlayer=(select((select count(distinct playerId) from log_login where registerTime=date_sub(curdate(),interval i+3 day) and loginTime>=current_date() and loginTime<date_add(curdate(),interval 1 day) and areaId=@AID)/(select count(distinct playerId) from log_login where registerTime=date_sub(curdate(),interval i+3 day) and areaId=@AID))*100) where createTime>=date_sub(curdate(),interval i day) and createTime<date_sub(curdate(),interval i-1 day);
update statistics_player_l set fiveDayPlayer= (select((select count(distinct playerId) from log_login where registerTime=date_sub(curdate(),interval i+4 day) and loginTime>=current_date() and loginTime<date_add(curdate(),interval 1 day) and areaId=@AID)/(select count(distinct playerId) from log_login where registerTime=date_sub(curdate(),interval i+4 day) and areaId=@AID))*100) where createTime>=date_sub(curdate(),interval i day) and createTime<date_sub(curdate(),interval i-1 day);
update statistics_player_l set sixDayPlayer=(select((select count(distinct playerId) from log_login where registerTime=date_sub(curdate(),interval i+5 day) and loginTime>=current_date() and loginTime<date_add(curdate(),interval 1 day) and areaId=@AID)/(select count(distinct playerId) from log_login where registerTime=date_sub(curdate(),interval i+5 day) and areaId=@AID))*100) where createTime>=date_sub(curdate(),interval i day) and createTime<date_sub(curdate(),interval i-1 day);
update statistics_player_l set sevenDayPlayer=(select((select count(distinct playerId) from log_login where registerTime=date_sub(curdate(),interval i+6 day) and loginTime>=current_date() and loginTime<date_add(curdate(),interval 1 day) and areaId=@AID)/(select count(distinct playerId) from log_login where registerTime=date_sub(curdate(),interval i+6 day) and areaId=@AID))*100) where createTime>=date_sub(curdate(),interval i day) and createTime<date_sub(curdate(),interval i-1 day);
end if;
SET i=i+1;
end while;


SET numareaId=numareaId-1;
SET currentareaId=currentareaId+1;

END WHILE loop1;

end
[/code

问题补充:我是用sql形式的脚本发上来的,怎么没变啊?我在csdn论坛里边提问了。这里看不清楚去那里看吧。关于mysql存储过程循环的问题

问题补充:算了算了。。自己琢磨出来了。发布到博客了。去看看把
2013年5月06日 12:52
目前还没有答案

相关推荐

    优化使用mysql存储session的php代码

    之前写过两篇文章《自定义SESSION(二)——数据库保存》和《我为什么不使用session》 但后来发现都有问题。前者处理在实际中几乎没什么用处,而且session回收还得自己另外处理。后者频繁的操作数据库,打来了很大的...

    jsp+servlet+mysql 图书馆座位预约系统

    收藏心仪座位功能:学生可根据个人喜好添加心仪座位进入【我的收藏】,收藏夹的座位设置【一键预约】,若所收藏的座位为“可预约”状态则可通过点击【一键预约】进行预约,提示“预约成功,请在规定时间进入图书馆...

    BT发布跟踪系统BTman v2.0

    3.实时分析tracker的输出信息,统计种子数,正在下载数,下载完数,让用户可以有针对地下载,考虑到流量统计消耗系统资源且没多大实际意义,故此版本不支持流量统计.4.实时从用户上传的torrent中提取info_hash,文件...

    嘉缘人才系统php 3.0 UTF8.rar

    今天2.3真的来了,1.0SP5升级2.3以及ASP6.0/7.0升级2.3的升级转换程序也随之要来了。 经过嘉缘官方综合各方面因素考虑,决定嘉缘人才系统PHP版本从V2.3开始继续发布免费版本,仅对部分功能与商业版有所区别或限制...

    明灯淘宝客快速建站程序

    六,明灯淘宝客建站程序后台一目了然,可视化操作,快速配置淘宝站名称,关键字,网站描述,统计代码,加入淘宝客PID等。 七,明灯淘宝客建站程序的使用者不需要任何的基础,本程序完全引导式、可视化操作,快速...

    baiyouke30mfb百优客信息发布

    10. **更新与维护**:作为一个成熟的产品,百优客信息发布会有持续的更新和维护,修复已知问题,提升性能,适应互联网环境的变化。 总之,百优客信息发布系统是一个全方位的信息发布解决方案,它结合了现代网站的...

    gestion-stage

    - **统计公报**:能够生成关于实习过程的数据报告,如实习生出席情况、工作量统计、表现评估等,帮助企业决策者了解实习计划的整体状况。 2. **安装与部署**: "快来了..." 暗示该项目可能包含安装指南或自动脚本...

    基于JSP技术的图书管理系统的设计与实现

    在选择数据库方面,SQL Server、MySQL和MSSQLServer等都是常用的数据库管理系统。选择合适的数据库管理系统能够保证数据的安全性、可靠性和高效性。 ### 系统实现 系统实现涉及到具体的编码和配置过程,其中包括了...

    图书项目:图书追踪器网络应用

    JDK 11(由于其中一个库存在问题-Karibu测试-与更高版本不兼容,该应用程序当前无法在更高版本上运行) 如果您没有全局安装Node.js,则不需要它,因为Vaadin会自动安装它如果您确实安装了Node.js,请确保它的版本...

    水晶报表设计,学习资料。

    2. **数据连接与数据源**:报表设计的核心在于数据,水晶报表9.0支持多种数据源,包括数据库(如SQL Server、Oracle、MySQL等)、XML文件、Web服务等。通过数据链接,用户能够轻松获取并处理来自不同来源的数据。 3...

    网软志成分类信息网站系统.net官方商业版

    会员密码修改,管理我的收藏,管理我的订单 ,信息可管理全部信息,修改管理竟价信息,查看管理未审信息,查看管理过期信息,发布新的分类信息,金币模板有,奖励金币,扣除金币,在线充值,充值记录,短信模块,有收件箱,发信箱,...

Global site tag (gtag.js) - Google Analytics