550,游戏玩法分析四
游戏玩法分析四
分析
-
第一步:求总玩家数
select count(distinct player_id) from activity;
-
第二步:求每位玩家首次登录的时间
select player_id, min(event_date) from activity group by player_id;
-
判断哪些用户是连续两次登录的
select * from activity -- 进行判断,如果有一位玩家的登录时间 减去 一天能在下面的结果中查到,则此用户是连续两天登录的 where (player_id, date_sub(event_date, interval 1 day)) in ( -- 每位玩家首次登录的时间 select player_id, min(event_date) from activity group by player_id );
-
报告在首次登录的第二天再次登录的玩家的 比率,四舍五入到小数点后两位
select round(count(*) / -- 总玩家数 (select count(distinct player_id) from activity) , 2) fraction from activity -- 进行判断,如果有一位玩家的登录时间 减去 一天能在下面的结果中查到,则此用户是连续两天登录的 where (player_id, date_sub(event_date, interval 1 day)) in ( -- 每位玩家首次登录的时间 select player_id, min(event_date) from activity group by player_id );
实现
select
round(count(*) /
-- 总玩家数
(select count(distinct player_id) from activity)
, 2) fraction
from activity
-- 进行判断,如果有一位玩家的登录时间 减去 一天能在下面的结果中查到,则此用户是连续两天登录的
where (player_id, date_sub(event_date, interval 1 day)) in (
-- 每位玩家首次登录的时间
select
player_id,
min(event_date)
from activity
group by player_id
);
总结
这题与 即时食物配送二 很相似,思路和方法几乎一样。