LeetCode刷题实战550:游戏玩法分析 IV
今天和大家聊的问题叫做 游戏玩法分析 IV,我们先来看题面:
https://leetcode-cn.com/problems/game-play-analysis-iv/
解题
本题要求计算一个比值,分母是所有不同选手的数量,分子是那些首次在设备登录后连续第二天又登录的选手数量。
分母很容易求,难点在于分子的计算。要计算分子,首先要找到每个选手的首次登录日期。然后,将该查询作为一个临时表与原表连接,再筛选出那些登录日期与首次登录日期相差一天的记录,最后计算数量即可。
SELECT ROUND ( ( SELECT COUNT( IF(DATEDIFF(a1.event_date, a2.min_date) = 1, 1, null) ) FROM Activity a1, ( SELECT player_id, MIN(event_date) AS min_date FROM Activity GROUP BY player_id ) a2 WHERE a1.player_id = a2.player_id ) / COUNT(DISTINCT(player_id)) , 2) fraction FROM Activity
上期推文:
今天和大家聊的问题叫做 游戏玩法分析 IV,我们先来看题面: https://leetcode-cn.com/problems/game-play-analysis-iv/ 解题 本题要求计算一个比值,分母是所有不同选手的数量,分子是那些首次在设备登录后连续第二天又登录的选手数量。 分母很容易求,难点在于分子的计算。要计算分子,首先要找到每个选手的首次登录日期。然后,将该查询作为一个临时表与原表连接,再筛选出那些登录日期与首次登录日期相差一天的记录,最后计算数量即可。 SELECT ROUND ( ( SELECT COUNT( IF(DATEDIFF(a1.event_date, a2.min_date) = 1, 1, null) ) FROM Activity a1, ( SELECT player_id, MIN(event_date) AS min_date FROM Activity GROUP BY player_id ) a2 WHERE a1.player_id = a2.player_id ) / COUNT(DISTINCT(player_id)) , 2) fraction FROM Activity 上期推文:上一篇:
通过多线程提高代码的执行效率例子
下一篇:
wait和notify的使用方法