我做这个问题时,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。谁能告诉我为什么会发生这种情况,以及如何修复我的代码?
首先感谢您的宝贵时间!
发布于 2020-05-11 15:38:09
如下所示修改您的查询,选择最小event_Date对应的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
https://stackoverflow.com/questions/61733533
复制相似问题