计算机小白QAQ,因为想找数分岗暑期实习所以充了会员想集中刷一下leetcode的mysql部分。写这个系列博文和大家们交流一下,后面也会持续更新面经准备的一些问题,欢迎同好们一起交流,求大佬轻喷QAQ。因为自己初学也走了很多弯路,所以会尽量写得详细一点,如果可以帮助到后来的朋友们,请各位留言鼓励一下哈哈哈哈。
512、游戏玩法分析II
思路:先找的每个player首次登陆的时间作为子查询,以(player_id,event_date)作为过滤条件返回其在子查询范围内的player_id和device_id。
这个思路下没有新的知识点,只是有一个需要注意的点。为什么要以这两个列名组合为过滤条件而不是event_date自己呢?是因为有可能这一组的最小值event_date可能在别的组也出现过,这样就会导致输出的错误。同时这里没有将子查询作为新的表使用所以不需要命名,如果是要左连接之类的是需要命名的。
代码:
select player_id,device_id
from Activity
where (player_id,event_date) in (select player_id,min(event_date)
from Activity
group by player_id)