mysql函数实例-统计日存留率_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

热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

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

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

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

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

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

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

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

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