大数据开发中如何计算用户留存及SQL示例

在大数据开发领域,用户留存是一个关键指标,它反映了产品吸引并保留用户的能力。
image.png

留存率的计算不仅有助于评估产品的健康状况,还能为产品优化和市场策略提供重要依据。

本文将详细介绍如何在大数据开发中计算用户留存,并附带具体的SQL示例。

目录

    • 留存的定义与意义
    • 留存率的计算公式
    • SQL示例:计算次日留存率
      • 第一步:数据预处理
      • 第二步:计算次日留存用户
      • 第三步:计算留存率
    • 完成SQL
    • 其他留存率计算方法
    • 总结

留存的定义与意义

image.png

留存是指用户在某一时间点(如注册日、首次使用日)后,在后续特定时间段内继续使用该产品的行为。留存率则是这些留存用户占初始用户的比例。留存率越高,说明产品越能吸引并保持用户的兴趣。

留存的意义在于:

  • 评估产品吸引力:留存率高的产品通常意味着用户对产品有较高的满意度和忠诚度。
  • 指导产品优化:通过分析不同时间段的留存率,可以识别产品改进的方向,如用户体验、功能设计等。
  • 制定市场策略:根据留存数据,可以制定更有针对性的营销策略,提高用户粘性和活跃度。

留存率的计算公式

image.png

留存率的计算公式通常为:
留存率 = 基准日后第n天活跃用户数 基准日用户数 × 100 % \text{留存率} = \frac{\text{基准日后第n天活跃用户数}}{\text{基准日用户数}} \times 100\% 留存率=基准日用户数基准日后第n天活跃用户数×100%
其中,基准日可以是用户注册日、首次使用日等,n可以是1天、7天、30天等,具体取决于分析需求。

SQL示例:计算次日留存率

以下是一个使用SQL计算次日留存率的示例。假设我们有一个用户行为日志表user_log,包含字段user_id(用户ID)、login_time(登录时间)等。

image.png

第一步:数据预处理

首先,我们需要从用户行为日志表中提取出每个用户的首次登录时间和后续登录时间。这里我们使用窗口函数来找出每个用户的首次登录时间。

WITH first_login AS (
    SELECT
        user_id,
        MIN(login_time) AS first_login_time
    FROM
        user_log
    GROUP BY
        user_id
)

第二步:计算次日留存用户

接下来,我们将用户行为日志表与首次登录时间表进行连接,并筛选出次日登录的用户。

, retention_users AS (
    SELECT
        a.user_id,
        a.login_time,
        DATE_ADD(b.first_login_time, INTERVAL 1 DAY) AS expected_next_day
    FROM
        user_log a
    JOIN
        first_login b ON a.user_id = b.user_id
    WHERE
        DATE(a.login_time) = DATE(expected_next_day)
)

第三步:计算留存率

最后,我们计算次日留存用户数占初始用户数的比例。

SELECT
    COUNT(DISTINCT r.user_id) AS next_day_retention_users,
    COUNT(DISTINCT f.user_id) AS initial_users,
    ROUND(COUNT(DISTINCT r.user_id) / COUNT(DISTINCT f.user_id) * 100, 2) AS next_day_retention_rate
FROM
    first_login f
LEFT JOIN
    retention_users r ON f.user_id = r.user_id;

完成SQL

这个示例假设你有一个名为user_log的表,其中包含user_id(用户ID)和login_time(登录时间)字段。

-- 计算次日留存率
WITH FirstLogin AS (
    -- 找出每个用户的首次登录时间
    SELECT
        user_id,
        MIN(login_time) AS first_login_time
    FROM
        user_log
    GROUP BY
        user_id
),
RetentionUsers AS (
    -- 找出次日登录的用户
    SELECT
        a.user_id,
        a.login_time,
        DATE_ADD(b.first_login_time, INTERVAL 1 DAY) AS expected_next_day
    FROM
        user_log a
    JOIN
        FirstLogin b ON a.user_id = b.user_id
    WHERE
        DATE(a.login_time) = DATE(expected_next_day)
)
-- 计算留存率
SELECT
    COUNT(DISTINCT RetentionUsers.user_id) AS next_day_retention_users,
    COUNT(DISTINCT FirstLogin.user_id) AS initial_users,
    ROUND(COUNT(DISTINCT RetentionUsers.user_id) / COUNT(DISTINCT FirstLogin.user_id) * 100, 2) AS next_day_retention_rate
FROM
    FirstLogin
LEFT JOIN
    RetentionUsers ON FirstLogin.user_id = RetentionUsers.user_id;

这个SQL查询首先使用WITH子句创建了两个临时表:FirstLoginRetentionUsersFirstLogin表包含每个用户的首次登录时间,而RetentionUsers表包含那些在首次登录后的次日也登录了的用户。最后,主查询计算了次日留存用户数、初始用户数以及次日留存率。
image.png

其他留存率计算方法

除了次日留存率,我们还可以计算3日留存率、7日留存率等。这些计算方法的思路与次日留存率类似,只是在筛选条件中将INTERVAL 1 DAY改为相应的天数即可。

总结

用户留存率是衡量产品健康度和用户粘性的重要指标。

在大数据开发中,我们可以通过SQL等工具高效地计算留存率,为产品优化和市场策略提供有力支持。

本文介绍了留存的定义、意义以及具体的SQL示例,希望能对大数据开发人员有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/770219.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大数据之路 读书笔记 Day2

大数据之路 读书笔记 Day2 日志采集——浏览器的页面采集 一、分类 #mermaid-svg-8c9sRexRDdSB9pWA {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-8c9sRexRDdSB9pWA .error-icon{fill:#552222;}#mermaid-svg-8c9…

【论文解读】CVPR2024:DUSt3R: Geometric 3D Vision Made Easy

论文“”https://openaccess.thecvf.com/content/CVPR2024/papers/Wang_DUSt3R_Geometric_3D_Vision_Made_Easy_CVPR_2024_paper.pdf 代码:GitHub - naver/dust3r: DUSt3R: Geometric 3D Vision Made Easy DUSt3R是一种旨在简化几何3D视觉任务的新框架。作者着重于…

002-关于Geogebra软件的介绍及与MatLab的区别

为什么要学Geogebra? 因为和MatLab的科学计算相比,GeoGebra重点突出教学展示,对于教师、学生人群来讲再合适不过了,尤其是可以融入到PPT里边呈现交互式动画,想想听众的表情!这不就弥补了看到PPT播放数学公…

邮箱smtp发送邮件失败的原因?怎么做排查?

邮箱smtp发送邮件失败的解决方法?SMTP错误代码解析! 在使用SMTP发送邮件时,我们时常会遇到各种问题,导致邮件发送失败。了解这些问题的根本原因可以帮助我们更好地解决它们。AoKSend将详细探讨邮箱SMTP发送邮件失败的几大原因&am…

在 WebGPU 与 Vulkan 之间做出正确的选择(Making the Right Choice between WebGPU vs Vulkan)

在 WebGPU 与 Vulkan 之间做出正确的选择(Making the Right Choice between WebGPU vs Vulkan) WebGPU 和 Vulkan 之间的主要区别WebGPU 是什么?它适合谁使用?Vulkan 是什么?它适合谁使用?WebGPU 和 Vulkan…

mac 上 Docker Desktop的免费开源的替代工具Colima

当谈到在macOS上运行容器时,Docker长期以来一直是首选。但是,必须解决使用适用于macOS的Docker Desktop时出现的一些限制,特别是对于大中型公司,最大的问题是需要购买许可证。另外,macOS 版Docker Desktop的性能问题也…

单调栈(左小大,右小大)

①寻找每个数左边第一个比它小的数 给定一个长度为 N 的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出 −1。 输入样例: 3 4 2 7 5 输出样例: -1 3 -1 2 2 从左到右遍历,用单调递增(栈底到栈顶…

c->c++(二):class

本文主要探讨C类的相关知识。 构造和析构函数 构造函数(可多个):对象产生时调用初始化class属性、分配class内部需要的动态内存 析构函数(一个):对对象消亡时调用回收分配动态内存 C提供默认构造和析构,…

行人检测技术:思通数科大模型在自动驾驶安全中的应用

在自动驾驶技术飞速发展的今天,行人检测已成为确保道路交通安全的关键技术之一。本文将探讨如何结合思通数科大模型和计算机视觉技术,实现在城市交通环境中对行人的高效检测,为自动驾驶车辆提供必要的行人安全保障。 引言 行人检测技术是利…

Dubbo内部通信流程

我当时在学习的过程中搭建过demo,具体流程就是,我先定义了一个api接口模块,还定义一个服务提供者模块,然后服务提供方实现该接口,定义该方法具体的实现impl类,服务提供方启动时,将要暴露的服务和…

【架构-20】死锁

什么是死锁? 死锁(Deadlock)是指两个或多个线程/进程在执行过程中,由于资源的互相占用和等待,而陷入一种互相等待的僵局,无法继续往下执行的情况。 产生死锁的四个必要条件: (1)互斥条件(Mutual Exclusion):至少有一个资源是非共享…

跨阻放大器

#创作灵感# 最近涉及到微电流的监测项目,而里面的核心就是跨阻放大器,所以这里做一个简单的介绍,后续等项目完成了,再做一个实例的介绍。 #正文# 跨阻放大器(Transimpedance Amplifier, TIA)是一种将输入电…

Windows编程之多线程事件对象(Event Object)用法详解

目录 一、前言 二、基础用法 三、API详解 1.创建事件对象 2控制事件状态 3.等待事件对象: 四、实战案例 1.案例描述 2.代码设计 3.总设计代码 4.运行结果 一、前言 事件对象(Event Object)是我们在大型项目中,进行多线…

股价持续低迷,业绩颓势不减,冀光恒难救平安银行?

文|新熔财经 作者|宏一 周一一上班,就听到旁边的同事感慨今年股市行情很不错,尤其是银行股,上半年累计上涨了17.02%,是涨幅最大的板块。 听到这里,我美滋滋地打开自己的账户,结…

如何对低代码平台进行分类?

现在市面上的低代码平台就像雨后春笋一样冒出来,而且源源不绝,但总结下来,大致的也就以下三类。 一、 aPaaS多引擎类(有很多成熟引擎、做好东西要一起用) 这类产品包括:织信Informat(国内&…

照明物联网:基于网关的智能照明云监控系统解决方案

智能照明系统就是利用物联网技术,将同一空间的照明、空调、新风、排风等系统共同接入物联网平台,实现了“设备互联、数据互通”的智慧物联能力。照明数据、环境监测数据通过网关上传云端,在云端进行统计分析并将结果通过各种终端共享&#xf…

MySQL—常用的数据类型

数据类型 整型 1.创建一个含有无符号/有符号整型的字段的表 CREATE TABLE L1(id tinyint unsigned #无符号 ) CREATE TABLE L2(id tinyint #默认为有符号 ) 数值型(bit) 2.数值型(bit)的使用 小数 3.数值型(小数)的基本使用 字符串 4.字符串的基本使用 #演示字符串类型…

REGX52.H报错

keil cannot open source input file "REGX52.H": No such file or directory 选择下面这个目录 Keil\C51\INC\Atmel

AI绘画Stable Diffusion 新手入门教程:万字长文解析Lora模型的使用,快速上手Lora模型!

大家好,我是设计师阿威 今天给大家讲解一下AI绘画Stable Diffusion 中的一个重要模型—Lora模型,如果还有小伙伴没有SD安装包的,可以看我往期入门教程2024最新超强AI绘画Stable Diffusion整合包安装教程,零基础入门必备&#xff…

【软件测试】Selenium自动化测试框架 | 相关介绍 | Selenium + Java环境搭建 | 常用API的使用

文章目录 自动化测试一、selenium1.相关介绍1.Selenium IDE2.Webdriverwebdriver的工作原理: 3.selenium Grid 2.Selenium Java环境搭建3.常用API的使用1.定位元素2.操作测试对象3.添加等待4.打印信息5.浏览器的操作6.键盘事件7.鼠标事件8.定位一组元素9.多层框架定…