题目
Table: Activity
编写一个 SQL 查询,报告在首次登录的第二天再次登录的玩家的比率,四舍五入到小数点后两位。换句话说,您需要计算从首次登录日期开始至少连续两天登录的玩家的数量,然后除以玩家总数。
查询结果格式如下所示:
文章来源地址https://www.toymoban.com/news/detail-545536.html
解题思路
前置知识
1.ROUND() 函数
ROUND() 函数用于把数值字段舍入为指定的小数位数。
语法
SELECT ROUND(column_name,decimals) FROM TABLE_NAME;
2.DATE_ADD()函数
DATE_ADD() 函数向日期添加指定的时间间隔。
语法
DATE_ADD(date,INTERVAL expr type)
date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。
知道了上述函数用法后我们来解决这道题
1.题目要求我们查询首次登录的玩家第二天再次登录的玩家的比率,我们先查询出首次登录的日期(最小日期)然后+1(不论表中存不存在这个日期,先把这个日期创建出来)
select player_id,date_add(min(event_date),interval 1 day) from activity group by player_id
2.where条件是表中存在这样一个id和日期(就是已经+1的日期,如果存在就符合条件,如果不存在就过滤掉)
where (player_id,event_date) in (select player_id,date_add(min(event_date),interval 1 day) from activity group by player_id)
3.查找存在的id统计结果/总的id数
select round(count(distinct player_id)/(select count(distinct player_id) from activity),2 ) as fraction from activity
代码实现
select
round(count(distinct player_id)/(select count(distinct player_id) from activity),2 ) as fraction
from
activity
where
(player_id,event_date)
in
(select player_id,date_add(min(event_date),interval 1 day) from activity group by player_id)
运行结果
文章来源:https://www.toymoban.com/news/detail-545536.html
到了这里,关于SQL-每日一题【550.游戏玩法分析Ⅳ】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!