550. 游戏玩法分析 IV

这道题是编写SQL,报告在首次登录的第二天再次登录的玩家的分数,四舍五入到小数点后两位。
首先思路很流畅,

  1. 用复表找出第二天也登陆的player_id
  2. 两个统计量相除即可
  3. 最后四舍五入

但是我漏了最重要的一点首次,最后还要加一个过滤条件

SELECT ROUND(COUNT(DISTINCT a1.player_id) / (SELECT COUNT(DISTINCT player_id) FROM Activity), 2) AS fraction
FROM Activity AS a1, 
     Activity AS a2
WHERE a1.player_id = a2.player_id
AND DATEDIFF(a1.event_date, a2.event_date) = -1
AND (a1.player_id, a1.event_date) IN 
(
SELECT player_id, MIN(event_date)
FROM Activity
GROUP BY player_id
)

记得要两个主键一起in

发布了40 篇原创文章 · 获赞 0 · 访问量 588

猜你喜欢

转载自blog.csdn.net/Helslie/article/details/104982116
IV