MySQL计算用户留存率

2023年 8月 5日 59.7k 0

MySQL是一个非常强大的数据库管理系统,可以用来存储和处理各种数据。其中一项非常重要的功能是计算用户留存率,下面是用MySQL来实现的方法。

MySQL计算用户留存率

首先,我们需要创建一个名为“user_log”的表,用于记录用户的活动情况,包括用户ID,日期和注册日期等信息。

CREATE TABLE user_log (
user_id int,
date date,
is_reg boolean
);

然后,我们可以插入示例数据,以便进行测试。

INSERT INTO user_log VALUES (1, '2021-01-01', 1);
INSERT INTO user_log VALUES (2, '2021-01-01', 1);
INSERT INTO user_log VALUES (3, '2021-01-01', 1);
INSERT INTO user_log VALUES (1, '2021-01-02', 0);
INSERT INTO user_log VALUES (2, '2021-01-02', 0);
INSERT INTO user_log VALUES (3, '2021-01-02', 1);
INSERT INTO user_log VALUES (1, '2021-01-03', 0);
INSERT INTO user_log VALUES (2, '2021-01-03', 1);
INSERT INTO user_log VALUES (3, '2021-01-03', 1);
INSERT INTO user_log VALUES (1, '2021-01-04', 1);
INSERT INTO user_log VALUES (2, '2021-01-04', 0);
INSERT INTO user_log VALUES (3, '2021-01-04', 1);

接下来,我们可以使用以下查询来计算用户的留存率。

SELECT
ROUND(COUNT(CASE WHEN DATEDIFF(date, registered_date) = 0 THEN user_id END) / COUNT(DISTINCT user_id) * 100) AS `Day 0`,
ROUND(COUNT(CASE WHEN DATEDIFF(date, registered_date) = 1 THEN user_id END) / COUNT(DISTINCT user_id) * 100) AS `Day 1`,
ROUND(COUNT(CASE WHEN DATEDIFF(date, registered_date) = 2 THEN user_id END) / COUNT(DISTINCT user_id) * 100) AS `Day 2`,
ROUND(COUNT(CASE WHEN DATEDIFF(date, registered_date) = 3 THEN user_id END) / COUNT(DISTINCT user_id) * 100) AS `Day 3`,
ROUND(COUNT(CASE WHEN DATEDIFF(date, registered_date) = 4 THEN user_id END) / COUNT(DISTINCT user_id) * 100) AS `Day 4`,
ROUND(COUNT(CASE WHEN DATEDIFF(date, registered_date) = 5 THEN user_id END) / COUNT(DISTINCT user_id) * 100) AS `Day 5`,
ROUND(COUNT(CASE WHEN DATEDIFF(date, registered_date) = 6 THEN user_id END) / COUNT(DISTINCT user_id) * 100) AS `Day 6`
FROM (
SELECT
user_id,
MIN(date) AS registered_date
FROM user_log
WHERE is_reg = 1
GROUP BY user_id
) registered_users
JOIN user_log
ON registered_users.user_id = user_log.user_id
WHERE user_log.date >= registered_users.registered_date
GROUP BY registered_users.registered_date;

上面的查询会返回一个表格,其中每一行表示一个注册日和对应的留存率,从注册日开始,以7天为周期。例如,如果用户在2021年1月1日注册,第一行(Day 0)将显示该日的留存率,第二行(Day 1)将显示次日的留存率,以此类推。

这是使用MySQL计算用户留存率的方法,这是一个非常重要的指标,可以帮助我们了解用户的忠诚度和增长趋势。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论