leetcode1079:游戏玩法分析——求留存率

求留存率

题目描述

表:Activity

±-------------±--------+
| Column Name | Type |
±-------------±--------+
| player_id | int |
| device_id | int |
| event_date | date |
| games_played | int |
±-------------±--------+
(player_id,event_date)是此表的主键(具有唯一值的列的组合)
这张表显示了某些游戏的玩家的活动情况
每一行表示一个玩家的记录,在某一天使用某个设备注销之前,登录并玩了很多游戏(可能是 0)

玩家的 安装日期 定义为该玩家的第一个登录日。

我们将日期 x 的 第一天留存率 定义为:假定安装日期为 X 的玩家的数量为 N ,其中在 X 之后的一天重新登录的玩家数量为 M,M/N 就是第一天留存率,四舍五入到小数点后两位。

编写解决方案,报告所有安装日期、当天安装游戏的玩家数量和玩家的 第一天留存率。

以 任意顺序 返回结果表。

结果格式如下所示。

在这里插入图片描述

题解

t1:查询所有玩家首次安装游戏的时间

select
player_id,
min(event_date) as install_dt
from Activity
group by player_id

t2:查询当天安装该游戏的玩家数量

select t1.install_dt,
count(player_id) as installs
from 
    (select
    player_id,
    min(event_date) as install_dt
    from Activity
    group by player_id) t1

t3:查询安装第二天仍然登录游戏的玩家

select 
t1.install_dt,
count(a.player_id) as Day1_nums
from Activity a
left join 
    (select
    player_id,
    min(event_date) as install_dt
    from Activity
    group by player_id) t1
on a.event_date = date_add(t1.install_dt,interval 1 day)
and a.player_id = t1.player_id
where install_dt is not null
group by install_dt

将以上进行综合,并用t3中的第二天仍登录数量/首次登录的玩家数量,等于留存率。
即最终代码如下:

select t1.install_dt,
count(player_id) as installs,
ifnull(round(Day1_nums/count(player_id),2),0) as Day1_retention
from 
    (select
    player_id,
    min(event_date) as install_dt
    from Activity
    group by player_id) t1
left join
(
select 
t1.install_dt,
count(a.player_id) as Day1_nums
from Activity a
left join 
    (select
    player_id,
    min(event_date) as install_dt
    from Activity
    group by player_id) t1
on a.event_date = date_add(t1.install_dt,interval 1 day)
and a.player_id = t1.player_id
where install_dt is not null
group by install_dt) t3
on t1.install_dt = t3.install_dt
group by t1.install_dt

题目来源:力扣

相关推荐

  1. 511. 游戏分析 I

    2024-02-07 03:18:02       34 阅读
  2. 550. 游戏分析 IV

    2024-02-07 03:18:02       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-07 03:18:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-07 03:18:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-07 03:18:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-07 03:18:02       20 阅读

热门阅读

  1. 顺序表应用4:元素位置互换之逆置算法

    2024-02-07 03:18:02       30 阅读
  2. Python无人自动驾驶无人信号灯

    2024-02-07 03:18:02       40 阅读
  3. SpringBoot集成自定义线程池

    2024-02-07 03:18:02       36 阅读
  4. 动态更改 Spring 定时任务 Cron 表达式的优雅方案

    2024-02-07 03:18:02       36 阅读
  5. 安装 kvm Qemu rocky8 linux

    2024-02-07 03:18:02       34 阅读
  6. 能够在线预览的组件库(支持vue2/3)

    2024-02-07 03:18:02       37 阅读
  7. Linux cd 和 df 命令执行异常

    2024-02-07 03:18:02       33 阅读
  8. css浮动

    css浮动

    2024-02-07 03:18:02      33 阅读
  9. c#记录几个问题

    2024-02-07 03:18:02       38 阅读