数据库
首页 > 数据库> > leetcodeSQL: 游戏玩法分析 IV

leetcodeSQL: 游戏玩法分析 IV

作者:互联网

在这里插入图片描述
思路和注意点
1.找到每个玩家id对应的login时间,这里用min + group by,注意若不加group b只会输出一行,因为只有一个min
2.然后用1的表left join 原表,条件是id相同,但a.event_date 比login大一天,这里用到datediff, 前面减后面就是差
3.最后使用round取两位
4.中间的是a.event_date的出现频率,可以用avg(a.event_date is not null)表示将存在envet_date的表示1,其余0

src:

# Write your MySQL query statement below
# is not null就是1,找到1的平均值,就是频率

select round(avg(a.event_date is not null), 2) fraction
# 先找出每个用户id+首次登陆的信息, 然后左连接找满足条件的, a.event_date不能是空
from (select player_id, min(event_date) as login_day
      from Activity
      group by player_id) t left join Activity a  
      # group by 保证只有一个player_id 作为主键
      # 不用group by只会输出一个min值
on t.player_id = a.player_id
and datediff(a.event_date, t.login_day) = 1

总结:
非常综合的一道题
考察了min,group,leftjoin,datediff,round,avg牛皮!

标签:group,min,玩法,id,player,date,leetcodeSQL,IV,event
来源: https://blog.csdn.net/weixin_40986490/article/details/123146598