请您先登录,才能继续操作

0 0

mysql关于用户留几日存率的统计,怎么做啊?10

本来已经做好的,但是老板要改需求。
假如说从12号开始。
12号的次日留存率为0,三日留存为0,七日留存为0.
13号的数据一出来,12号的次日留存就改为x%。
14号的数据一出来,12号的三日留存就改为x%。
18号的数据一出来,12号的七日留存就改为x%。

我用的mysql数据库。这存储过程该怎么写啊?头疼。目前只写出来插入的了,也不知道对不对,修改的不知道怎么说,求大侠拔刀相助啊!!
BEGIN

declare numareaId int(10);
declare currentareaId int(10);

if !exists(select `TABLE_NAME` from `INFORMATION_SCHEMA`.`TABLES` where `TABLE_SCHEMA`='sgsi' and `TABLE_NAME`='statistics_day_player') then
CREATE TABLE statistics_day_report
(
idx INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (idx),
areaId INT NOT NULL default 0,
newPlayer INT NOT NULL default 0,
createTime DATETIME,
oneDayPlayer double NOT NULL default 0,
twoDayPlayer double NOT NULL default 0,
threeDayPlayer double NOT NULL default 0,
fourDayPlayer double NOT NULL default 0,
fiveDayPlayer double NOT NULL default 0,
sixDayPlayer double NOT NULL default 0,
sevenDayPlayer double NOT NULL default 0
);
end if;


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;
SELECT count(distinct playerId)  INTO @newplayer FROM log_login where registerTime=current_date()  and areaId=@AID;

INSERT INTO statistics_day_player (areaId,newPlayer,createTime,oneDayPlayer,twoDayPlayer,threeDayPlayer,fourDayPlayer,fiveDayPlayer,sixDayPlayer,sevenDayPlayer) VALUES
(currentareaId,
@newplayer,
(select ((select count(distinct playerId) from log_login where registerTime=current_date()  and loginTime>=date_add(curdate(),interval 1 day) and loginTime<date_add(curdate,interval 2 day) and areaId=@AID)/(select count(distinct playerId) from log_login where registerTime=current_date() and areaId=@AID))*100),
(select ((select count(distinct playerId) from log_login where registerTime=current_date()  and loginTime>=date_add(curdate(),interval 2 day) and loginTime<date_add(curdate,interval 3 day) and areaId=@AID)/(select count(distinct playerId) from log_login where registerTime=current_date() and areaId=@AID))*100),
(select ((select count(distinct playerId) from log_login where registerTime=current_date()  and loginTime>=date_add(curdate(),interval 3 day) and loginTime<date_add(curdate,interval 4 day) and areaId=@AID)/(select count(distinct playerId) from log_login where registerTime=current_date() and areaId=@AID))*100),
(select ((select count(distinct playerId) from log_login where registerTime=current_date()  and loginTime>=date_add(curdate(),interval 4 day) and loginTime<date_add(curdate,interval 5 day) and areaId=@AID)/(select count(distinct playerId) from log_login where registerTime=current_date() and areaId=@AID))*100),
(select ((select count(distinct playerId) from log_login where registerTime=current_date()  and loginTime>=date_add(curdate(),interval 5 day) and loginTime<date_add(curdate,interval 6 day) and areaId=@AID)/(select count(distinct playerId) from log_login where registerTime=current_date() and areaId=@AID))*100),
(select ((select count(distinct playerId) from log_login where registerTime=current_date()  and loginTime>=date_add(curdate(),interval 6 day) and loginTime<date_add(curdate,interval 7 day) and areaId=@AID)/(select count(distinct playerId) from log_login where registerTime=current_date() and areaId=@AID))*100),
(select ((select count(distinct playerId) from log_login where registerTime=current_date()  and loginTime>=date_add(curdate(),interval 7 day) and loginTime<date_add(curdate,interval 8 day) and areaId=@AID)/(select count(distinct playerId) from log_login where registerTime=current_date() and areaId=@AID))*100)
);



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

END WHILE loop1;

END
2013年4月19日 14:44

1个答案 按时间排序 按投票排序

0 0

采纳的答案

假如说从12号开始。
12号的次日留存率为0,三日留存为0,七日留存为0.
13号的数据一出来,12号的次日留存就改为x%。
14号的数据一出来,12号的三日留存就改为x%。
18号的数据一出来,12号的七日留存就改为x%。


直接在应用中做定时任务(如半夜三点执行 对你性能造成不了多大影响) 多好  每天算一遍昨天的 

以前我们做留存率 都是分析日志完成的 不读库

2013年4月19日 14:58

相关推荐

    非常完美Java实现年、月、日、周访问量统计

    在Java编程语言中,实现对年、月、日、周访问量的统计是一项常见的任务,尤其是在网站数据分析或者服务器日志处理中。这个任务涉及到日期时间处理、数据存储以及可能的数据聚合操作。以下是一些关键的知识点,可以...

    MySQL命令大全

    MySql的用户管理是通过User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下: grant all on mydb...

    mysql千万级数据大表该如何优化?

    MySQL中的千万级数据大表优化是一项复杂而关键的任务,它涉及到多个方面,包括数据库设计、索引策略、SQL优化、硬件配置以及存储引擎的选择。以下是一份详细的优化指南,涵盖了上述提到的关键点: 1. **数据容量...

    仿世纪佳缘婚介交友系统5.3 ASP+SQL

    、用户在线超时时间即为统计记录用户在线,在超过一定时间系统会自动清空这些超时用户、或者已经长期不活动的用户!默认为40分钟即可。 、金币操作记录天数,即会员在充值、消费操作时数据库记录的时间段,...

    JSP做的公司签到系统

    【JSP做的公司签到系统】是一个基于Java服务器页面(JSP)技术构建的企业级应用,主要用于实现员工的日常考勤签到管理。这个系统利用了MyEclipse6.0作为开发环境,集成了Tomcat5.5作为应用服务器,JDK1.5作为Java...

    基于JAVA的人力资源管理系统

    在信息技术日益发展的今天,企业对人力资源管理的需求也日益精细化,基于JAVA开发的人力资源管理系统(HRM System)因其高效、稳定和可扩展性,已经成为众多企业的首选。本文将深入探讨这个系统的相关知识点。 首先...

    图书管理系统

    2. 借阅与归还管理:用户可以通过系统进行图书借阅和归还操作,系统会自动记录借阅时间、到期日,并在图书逾期时发出提醒。同时,系统还能处理续借、预约和取消预约等功能。 3. 用户管理:管理员可以创建、管理用户...

    自己做的图书馆管理系统开发文档-8操作手册.doc

    4) 统计分析:生成各类统计数据,如借阅率、热门图书等。 2.2 性能 2.2.1 精度:系统需确保数据的准确性,避免错误的图书信息和借阅记录。 2.2.2 时间特性:系统应具有高响应速度,以满足实时操作的需求。 2.2.3 ...

    Mysql指定日期区间的提取方法

    在数据库搬砖的过程中,免不了要跟日期打交道,比如按日期汇总一些指标、统计某段时间内的总量等。 如果是固定的日期还好,只需直接指定即可,但很多时候都是需要根据当前日期自适应变化的。比如:提取上周一到上周...

    学籍管理系统--PHP做的(带源码和文档)

    在信息技术日益发达的今天,学籍管理系统的开发与应用已经成为教育领域不可或缺的一部分。本系统是基于PHP语言,结合MySQL数据库和Apache服务器进行构建的,旨在提供一种高效、便捷的方式来管理和维护学生的信息。...

    C#做的图书馆管理系统

    在信息技术日益发达的今天,图书馆管理系统的自动化与网络化已成为提升服务质量和效率的重要手段。本系统采用C#编程语言和ASP.NET框架进行开发,旨在实现图书的信息化管理,提供便捷的图书查询、借阅等功能。下面,...

    人事考勤管理系统 VC++ SQL 源代码 数据库

    3. 节假日表:列出公休日和特殊节假日,方便在计算工作日时排除。 4. 请假申请表:保存员工的请假申请,包括请假类型、开始结束日期、请假理由等。 此外,为了确保数据的一致性和完整性,数据库设计中还需要考虑...

    洗浴系统 pb源码

    6. **报表与分析**:生成各类业务报表,如日销售额、月度会员消费统计,以帮助管理层做决策。 7. **系统设置**:包括数据库配置、权限管理、系统参数设定等,确保系统的稳定运行。 在学习这个源代码时,你可以关注...

    A simple demo of a manager for student information, which .zip

    一般来说,这样的系统会包含以下几个核心模块: 1. 学生信息录入:允许用户输入新学生的个人信息,如姓名、性别、出生日期、联系方式以及家庭背景等。 2. 数据查询与检索:用户可以通过学号、姓名或其他关键词快速...

    PB9.0学生信息管理系统

    系统的核心功能可能包括以下几个方面: 1. 学生信息录入:系统提供了一个界面,允许用户输入学生的个人信息,如姓名、性别、出生日期、班级等。这些信息通常存储在一个关系型数据库中,如SQL Server或MySQL。 2. ...

    基于springboot的精品在线试题库系统源码数据库.doc

    - **数据库层**:MySQL用于存储各种数据,包括用户信息、试题详情、考试记录等。 #### 系统功能模块 本系统主要分为三大角色:管理员、教师、学生,并针对每个角色设计了相应的功能模块: - **管理员功能**: - ...

    ebsite for net4.0网站建设系统 v3.0 正式版.zip

    5.性能优化,打造支持1000w级别数据访问系统,因此3.0后放弃了之前的Access数据版本,只保留了MySql与Sqlserver两个官方版本,数据库方面做了性能优化,在系统本身加入了数据硬盘缓存机制,实现了动态访问静态调用,...

    2018Sql试题

    SQL试题集锦旨在帮助MySQL用户提升SQL技能,涵盖了多种数据查询和分析的场景。下面将对题目中的几个关键知识点进行详细解析。 1. 统计不同客户类型对应的客户数量并排序: 这个问题主要涉及到`JOIN`、`GROUP BY`和...

    酒店业务管理系统 mfc C++课程设计(附数据库)

    6. **报表统计**:生成各类业务报表,如入住率报告、收入分析等,辅助决策。 在开发过程中,学生会学习到如何设计数据库模型,编写SQL语句来操作数据,如何使用MFC构建GUI界面,以及如何将这些组件有效地集成在一起...

    03开源NewSql数据库TiDB-Deep Dive into TiDB

    经过 6 个 RC 版本,TiDB 2.0 GA 版本于 4 月 27 日正式发布。 2.0 版本规划 根据现有用户的情况、技术发展趋势以及社区的声音,TiDB 2.0 版本主要聚焦在以下几点: 保证 TiDB 的稳定性以及正确性。这两点是一个...

Global site tag (gtag.js) - Google Analytics