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牛皮!

上一篇:第六章 Web开发实战1——HTTP服务


下一篇:人人都是 Serverless 架构师 | 现代化 Web 应用开发实战