跳到主要内容

550.游戏玩法分析 IV

序号题目难度
550题目链接中等

题目大意​

编写解决方案,报告在首次登录的第二天再次登录的玩家的 比率,四舍五入到小数点后两位。换句话说,你需要计算从首次登录后的第二天登录的玩家数量,并将其除以总玩家数。

Table: Activity

Column NameType
player_idint
device_idint
event_datedate
games_playedint

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

示例​

输入​

Activity table:

player_iddevice_idevent_dategames_played
122016-03-015
122016-03-026
232017-06-251
312016-03-020
342018-07-035

输出​

fraction
0.33

解释​

只有 ID 为 1 的玩家在第一天登录后才重新登录,所以答案是 1/3 = 0.33

参考答案​

with t1 as (
select
player_id
,min(event_date) min_event_dt
from activity
group by 1
)
select
round(sum(case when t2.player_id is not null then 1 else 0 end) / count(1), 2) as fraction
from t1
left join activity t2
on t1.player_id = t2.player_id
and datediff(t2.event_date, t1.min_event_dt) = 1
;