我在做这个问题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。谁能告诉我为什么会出现这种情况,如何修复我的代码?
先谢谢你的时间!
修改你的查询,如下图所示,选择最小事件日期对应的player_id,device_id。
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
或者使用下面的窗口函数。
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