LeetCode #512 游戏玩法分析 MySQL

LeetCode #512 Game Play Analysis MySQL

我在做这道题 LeetCode #512 我写的原始代码是:

select a.player_id, a.device_id from 
(select player_id, device_id, min(event_date)
from Activity
group by player_id) a

我这里的逻辑是先筛选出每个玩家对应的最小事件日期。代码似乎选择了我想要的正确最早日期,但未能对应与该特定日期匹配的设备 ID。谁能告诉我为什么会这样以及如何修复我的代码?

预先感谢您的宝贵时间!

将您的查询如下修改为 select player_id,device_id 对应于最小 event_Date.

select a.player_id, a.device_id from 
(select player_id, device_id, min(event_date)
from Activity
group by player_id,device_id) a

或者使用 window 函数如下,

select a.player_id, a.device_id from 
(select player_id, device_id,event_Date,row_number() over (partition by player_id order by event_Date asc) AS rn
from Activity) a
where rn = 1