首页 数据库 mysql教程 mysql函数实例-统计日存留率_MySQL

mysql函数实例-统计日存留率_MySQL

Jun 01, 2016 pm 01:32 PM
mysql 手机 数据库表 统计 软件

bitsCN.com

mysql函数实例-统计日存留率

 

1.数据库表

手机用户的信息保存在一张visitor_user的表中,其中包含了用户使用手机app软件时,可以获取的数据,包括: 商家id、手机设备号、下线时间等信息。

 

2.功能分析与设计

数据统计报表一般都采用DB的存储过程或函数进行统计,并将数据保存到数据库表中,提供前台应用查询和展示。对于实时性的报表需求,建议在非业务库上进行统计。一般主库对外提供业务服务,通过复制等机制将业务数据存储到专门的数据库,或者专门的物理节点上,这样就有效的避免了报表统计功能对正常业务的影响。

 

3.实现

1.首先,从用户日统计表中将前天的登录用户统计到存留明细表中。

2.然后,从用户日统计表中将昨天的登录用户统计出来,并将前天、昨天都登录的用户的存留状态设置为1。

3.然后,从存留明细表中统计昨天用户的存留数、存留率,并保存到存留表中。

 

执行统计采用了mysql的事件机制,定时触发调用统计函数,进行数据统计。

每天凌晨4点钟,开始统计昨天的日存留率。

 

event:

图片上传错误,待恢复后上传。

 

Sql代码  BEGIN      #Routine body goes here...      DECLARE _yesterday DATE DEFAULT NULL;      DECLARE _before_yesterday DATE DEFAULT NULL;      DECLARE _is_success tinyint(1) DEFAULT 0;            select DATE_SUB(DATE_FORMAT(NOW(), '%Y-%m-%d'),INTERVAL 1 day) INTO _yesterday;      select DATE_SUB(DATE_FORMAT(NOW(), '%Y-%m-%d'),INTERVAL 2 day) INTO _before_yesterday;            #统计前天用户数,并将前天用户插入到report_user_remain_day_detail表中      SET _is_success = get_user_remain_day(_before_yesterday);        #查询report_user_login_day_detail,统计昨天的用户,并将前天和昨天都登录的用户状态设置为1      SET _is_success = update_user_status_remain(_yesterday);        #统计存留用户明细表,将统计数据存储到统计表report_user_remain_day      SET _is_success = insert_user_remain_day(_yesterday);            RETURN _is_success;  END  Sql代码  CREATE FUNCTION `get_user_remain_day`(`_day_time` date) RETURNS int(1)  BEGIN      #Routine body goes here...       DECLARE stopFlag INT DEFAULT 0 ;      DECLARE _device VARCHAR(50) DEFAULT NULL;      DECLARE _a_token CHAR(64) DEFAULT '-1';      DECLARE _day_time date;      DECLARE _shop_id INT(11) DEFAULT 0;        #查询当天的登录用户      DECLARE cur1 CURSOR FOR  select shop_id, device, a_token from report_user_login_day_detail WHERE day_time = _day_time;      DECLARE CONTINUE HANDLER FOR NOT FOUND SET stopFlag=1;        OPEN cur1;            FETCH cur1 INTO _shop_id, _device, _a_token;      WHILE  stopFlag = 0 do          INSERT INTO report_user_remain_day_detail(id, shop_id, day_time, device, a_token)               values (UUID(), _shop_id, _day_time, _device, _a_token);            FETCH cur1 INTO _shop_id, _device, _a_token;      END WHILE;      CLOSE cur1;        RETURN 1;  END    Sql代码  CREATE FUNCTION `update_user_status_remain`(`_day_time` date) RETURNS tinyint(1)  BEGIN      #Routine body goes here...        DECLARE stopFlag INT DEFAULT 0 ;      DECLARE _device VARCHAR(50) DEFAULT NULL;      DECLARE _a_token CHAR(64) DEFAULT '-1';              #查询昨天的登录用户      DECLARE cur1 CURSOR FOR  select device, a_token from report_user_login_day_detail           WHERE day_time = _day_time;      DECLARE CONTINUE HANDLER FOR NOT FOUND SET stopFlag=1;        OPEN cur1;            FETCH cur1 INTO _device, _a_token;      WHILE  stopFlag = 0 do           UPDATE report_user_remain_day_detail SET status_remain = 1, day_time = _day_time               WHERE device = _device;            FETCH cur1 INTO _device, _a_token;      END WHILE;      CLOSE cur1;           RETURN 1;  END  Sql代码  CREATE FUNCTION `insert_user_remain_day`(`_day_time` date) RETURNS tinyint(1)  BEGIN      #Routine body goes here...      DECLARE stopFlag INT DEFAULT 0 ;      DECLARE _status_remain TINYINT(1);      DECLARE _remain_count INT DEFAULT 0;      DECLARE _all_count INT DEFAULT 0;      DECLARE _temp_count INT DEFAULT 0;              DECLARE cur2 CURSOR FOR SELECT status_remain, count(device) FROM report_user_remain_day_detail           WHERE status_remain = 1 and day_time = _day_time GROUP BY status_remain;       DECLARE CONTINUE HANDLER FOR NOT FOUND SET stopFlag=1;        OPEN cur2;            FETCH cur2 INTO _status_remain, _remain_count;       WHILE  stopFlag = 0 do                        IF _status_remain = 1 THEN              SET _temp_count = _remain_count;              SET _all_count = _all_count + _remain_count;                                ELSE               SET _all_count = _all_count + _remain_count;          END IF;                            INSERT INTO report_user_remain_day(id, day_time, remain_count, remain_percent_day, type_client)               VALUES(UUID(), _day_time, _temp_count, (_temp_count / _all_count), 0);            FETCH cur2 INTO _status_remain, _remain_count;       END WHILE;            CLOSE cur2;             RETURN 1;  END  
登录后复制

 


bitsCN.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
2 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

苹果华为都想做的无按键手机,被小米先做出来了? 苹果华为都想做的无按键手机,被小米先做出来了? Aug 29, 2024 pm 03:33 PM

根据Smartprix的爆料称,小米正在研发一台代号为「朱雀」的无按键手机。这份爆料称,这台代号朱雀的手机将秉承一体化的理念设计,使用屏下摄像头,并搭载高通骁龙8gen4处理器,如果计划没有变动,我们很可能在2025年看到它的到来。看到这个消息,我恍惚间以为自己回到了2019年——那时候小米发布了小米MIXAlpha概念机,环绕屏无按键设计相当惊艳。这是我第一次见识到无按键手机的魅力。想要一块「魔力玻璃」,就要先把按键干掉在《乔布斯传》中,乔布斯曾经表达过:希望手机能够像一块「充满魔力的玻璃」,

首发1.5K屏下摄像!努比亚Z70 Ultra来了:全球首款骁龙8 Gen4真全面屏手机 首发1.5K屏下摄像!努比亚Z70 Ultra来了:全球首款骁龙8 Gen4真全面屏手机 Aug 19, 2024 pm 03:47 PM

8月19日消息,努比亚自Z50Ultra发布以来,一直秉承着真全面屏的设计,并且一直在高像素屏下前摄领域不断探索。今日,据数码博主智慧皮卡丘爆料称,今年下半年即将发布的努比亚Z70Ultra将首发1.5K屏下摄像技术,是迄今为止行业内分辨率最高的UDC方案。据悉,目前中兴旗下的屏下前摄方案已推进到第六代。最新的屏下前摄方案在努比亚Z60Ultra、红魔9SPro系列中皆有所应有。屏幕分辨率为2480x1116,介于1080P和1.5K分辨率之间。这一次努比亚将通过突破现有分辨率的限制,将在行业内

如何修复 MySQL 8.4 上的 mysql_native_password 未加载错误 如何修复 MySQL 8.4 上的 mysql_native_password 未加载错误 Dec 09, 2024 am 11:42 AM

MySQL 8.4(截至 2024 年的最新 LTS 版本)中引入的主要变化之一是默认情况下不再启用“MySQL 本机密码”插件。此外,MySQL 9.0完全删除了这个插件。 此更改会影响 PHP 和其他应用程序

用手机打《黑神话:悟空》?实测能玩,但是不推荐 用手机打《黑神话:悟空》?实测能玩,但是不推荐 Aug 23, 2024 pm 09:44 PM

自《黑神话:悟空》上线以来,热度未曾下降,各大平台每天都有好多个热搜。可惜对于手机玩家来说,热闹只属于PC玩家、主机玩家和掌机玩家。那怎么行,我们搞手机的不能输。首先我们排除在手机上运行黑猴的思路,作为一个体积100多GB的大型3A游戏,性能需求是很高的,而且大量的渲染技术都是针对PC端硬件开发的,如果用手机硬件转译运行,别说帧率画面有多好,可能都无法进入游戏。既然这样,只能看看现在爆火的云游戏了,腾讯和网易两大巨头都有针对《黑神话》推出相应的活动。凭借自身WeGame平台也是发售平台的优势,腾

真我GT7 Pro产品力拉满:超声波指纹、超大电池、百瓦快充均在列 真我GT7 Pro产品力拉满:超声波指纹、超大电池、百瓦快充均在列 Aug 23, 2024 pm 03:31 PM

8月23日消息,根据数码博主数码闲聊站的爆料,真我GT7Pro的产品力将得到全面强化,其配置将覆盖超声波指纹、潜望长焦、超大电池以及百瓦快充等。1.真我GT7Pro内置超大6000mAh电池,支持百瓦快充。工程机不支持无线充电,量产机型情况未知。配备单点超声波指纹识别,支持IP68/69防尘防水。搭载LYT6003X潜望镜,不支持长焦微距。配备1.5K分辨率等深四曲直屏,使用京东方X2基材。采用骁龙8Gen4处理器,最高支持16GB内存和1TB存储。预计真我GT7Pro最快将于今年Q4登场。

小米 Redmi 14C 手机被曝 8 月 31 日发布:6.88 英寸 90Hz 屏幕、5160mAh 电池、5000 万主摄 小米 Redmi 14C 手机被曝 8 月 31 日发布:6.88 英寸 90Hz 屏幕、5160mAh 电池、5000 万主摄 Aug 24, 2024 am 11:07 AM

8月24日消息,科技媒体91Mobile昨日(8月23日)发布博文,爆料称小米将于8月31日发布Redmi14C智能手机,共有绿色(应该是素皮)、黑色和蓝色三种颜色。小米Redmi14C机身背面配有奥利奥圆形摄像头模块,配有2个摄像头传感器和1个LED闪光灯,5000万像素主摄,右侧为音量和电源按钮。附上小米Redmi14C的宣传图如下,可以看到正面配备水滴形凹槽,由于产品定位中低端,因此下巴部分边框较宽。规格方面,小米Redmi14C手机配备6.88英寸FullHD+分辨率屏幕,刷新率为90H

华为智选新机!WIKO Hi畅享70即将发布:2024罕见的水滴屏 华为智选新机!WIKO Hi畅享70即将发布:2024罕见的水滴屏 Aug 24, 2024 pm 12:35 PM

8月24日消息,据华为经销商“看山的叔叔”爆料,华为智选系列新品手机WIKOHi畅享70/70m即将发布。据介绍,新机的外观与华为畅享70基本一致,采用类似P60系列的设计,不过正面却配备了一块2024年非常罕见的水滴屏。WIKOHi畅享70核心配置:搭载MT6833处理器(联发科天玑700)定位:入门机型屏幕:6.75英寸屏幕预计为LCD屏分辨率:720x1600护眼效果优于OLED屏重量为202克,机身尺寸为168.3x77.7×8.98mm,内置5000mAh大容

币安binance官网最新版登录入口 币安binance官网最新版登录入口 Feb 21, 2025 pm 05:42 PM

访问币安官方网站最新版登录入口,只需遵循这些简单步骤。前往官方网址,点击右上角的“登录”按钮。选择您现有的登录方式,如果是新用户,请“注册”。输入您的注册手机号或邮箱和密码,并完成身份验证(例如手机验证码或谷歌身份验证器)。成功验证后,即可访问币安官方网站的最新版登录入口。

See all articles