首页 > 数据库 >MySql计算用户留存率

MySql计算用户留存率

时间:2024-08-16 10:27:50浏览次数:11  
标签:create 用户 day 留存 MySql device diff id

定义,每日新增的10个用户,在次日再次登陆有5个记为留存数5个,次日留存率为50%,在第七日还有3个,记为留存数3个,次日留存率为30%;

表1:hlj_user_base_info(用户注册表,记录用户注册信息);关键字段,user_id,device_id,register_time

表2:hlj_user_click_url_point (用户点击表,记录用户点击行为);关键字段,user_id,device_id,create_time

 1 SELECT
 2   create_date
 3 , 新增用户数
 4 , concat(CAST(ROUND((100 * 次日留存) / 新增用户数,2) AS char), '%') 次日留存率
 5 , concat(CAST(ROUND((100 * 2日留存) / 新增用户数,2) AS char), '%') 2日留存率
 6 , concat(CAST(ROUND((100 * 3日留存) / 新增用户数,2) AS char), '%') 3日留存率
 7 , concat(CAST(ROUND((100 * 4日留存) / 新增用户数,2) AS char), '%') 4日留存率
 8 , concat(CAST(ROUND((100 * 5日留存) / 新增用户数,2) AS char), '%') 5日留存率
 9 , concat(CAST(ROUND((100 * 6日留存) / 新增用户数,2) AS char), '%') 6日留存率
10 , concat(CAST(ROUND((100 * 7日留存) / 新增用户数,2) AS char), '%') 7日留存率
11 FROM
12   (
13    SELECT
14      create_date
15    , count((CASE WHEN (day_diff = 0) THEN device_id END)) 新增用户数
16    , count((CASE WHEN (day_diff = 1) THEN device_id END)) 次日留存
17    , count((CASE WHEN (day_diff = 2) THEN device_id END)) 2日留存
18    , count((CASE WHEN (day_diff = 3) THEN device_id END)) 3日留存
19    , count((CASE WHEN (day_diff = 4) THEN device_id END)) 4日留存
20    , count((CASE WHEN (day_diff = 5) THEN device_id END)) 5日留存
21    , count((CASE WHEN (day_diff = 6) THEN device_id END)) 6日留存
22    , count((CASE WHEN (day_diff = 7) THEN device_id END)) 7日留存
23    FROM
24      (
25       SELECT
26         login_log.device_id
27       , create_date
28       , DATEDIFF(login_date, create_date) day_diff
29       FROM
30         ((
31          SELECT DISTINCT
32            STR_TO_DATE(create_time, '%Y-%m-%d') login_date
33          , device_id
34          FROM
35            hlj_user_click_url_point 
36       )  login_log
37       INNER JOIN (
38          SELECT DISTINCT
39            STR_TO_DATE(register_time, '%Y-%m-%d') create_date
40          , device_id
41          FROM
42            hlj_user_base_info 
43       )  create_log ON (login_log.device_id = create_log.device_id))
44    )  temp_1
45    GROUP BY create_date
46 )  temp_2
47 ORDER BY create_date ASC

输出结果:

 

标签:create,用户,day,留存,MySql,device,diff,id
From: https://www.cnblogs.com/chig/p/18362395

相关文章

  • MySQL:查询(万字超详细版)
       ......
  • mysql数据库中decimal数据类型比较大小
    在MySQL中,DECIMAL数据类型用于存储精确的数值,它非常适合用于需要高精度计算的场景,如金融应用。当我们需要在MySQL数据库中比较DECIMAL类型数据的大小时,可以使用标准的比较运算符,如>,<,>=,<=,=和<>(或!=)。以下是一个详细的示例,说明如何在MySQL中使用DECIMAL数据类型并比较......
  • mysql数据库中decimal数据类型比较大小
    在MySQL中,DECIMAL数据类型用于存储精确的数值,它非常适合用于需要高精度计算的场景,如金融应用。当我们需要在MySQL数据库中比较DECIMAL类型数据的大小时,可以使用标准的比较运算符,如>,<,>=,<=,=和<>(或!=)。以下是一个详细的示例,说明如何在MySQL中使用DECIMAL数据类型并比较它......
  • 【待做】Mysql攻击之UDF提权
    一、前置知识1.1secure_file_privUDF是mysql的一个拓展接口,UDF(Userdefinedfunction)可翻译为用户自定义函数,这个是用来拓展Mysql的技术手段。这就意味着,我们可以通过udf为mysql添加任意功能,包括自定义sql函数,tcp开发,http请求,甚至直接调用系统命令;一、前置知识1.1......
  • 云计算实训30——mysql主从复制同步、mysql5.7版本安装配置、python操作mysql数据库、
    一、mysql主从复制及同步1、mysql主从自动开机同步2、配置mysql5.7版本mysql-5.7.44-linux-glibc2.12-x86_64.tar启动服务、登录对数据库进行基本操作3、使用python操纵mysql数据库4、编辑python脚本自动化操纵mysql数据库二、mycat读写分离......
  • Windows、Ubuntu安装mysql
    今天我们来学习一下如何在Windows、Ubuntu安装mysql。Windows安装mysql第一步:在官网找到需要安装的mysql版本,下载第二步:下载后打开安装包,进行安装。 点击“Next”: 默认就行,单击next:单击“Excute”等待所有进程结束就安装成功了!接下来配置环境变量:找到mysql的bi......
  • 一文搞懂后端面试之数据库分布式事务【中间件 | 数据库 | MySQL | ACID】
    单库拆分为分库分表之后,一个巨大的挑战就是本地事务变成了分布式事务。事实上,即使没有分库分表,在微服务架构之下我们也还是会面临分布式事务的问题。前置知识分布式事务既可以是纯粹多个数据库实例之间的分布式事务,也可以是跨越不同中间件的业务层面上的分布式事务。前表......
  • 泛微 e-office 10 schema_mysql.sql文件存在敏感信息泄露 附POC
    @[toc]免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。1.泛微e-office10简介微信公众号搜索:南风漏洞复现文......
  • MySQL必知必会(精华提取)
    ※食用指南:文章内容为《MySQL必知必会》此书个人HIGHLIGHT的文字(部分章节没有)、书中所有表格的汇总,建议小白先跟着视频学完一遍之后再来看此书,更易理解的同时达到查漏补缺的效果。推荐学习的视频:【中字】SQL进阶教程|史上最易懂SQL教程!10小时零基础成长SQL大师!!https://www......
  • 记录一次从mysql到sql的数据库迁移
    使用的是c#+SqlSugar。1.获取表数据///<summary>///获取数据库访问对象///</summary>///<returns></returns>publicSqlSugarClientGetSqlSugar(){SqlSugarClientdb=newSqlSugarClient(newConnectionConfig(){Db......