LeetCode #512游戏玩法分析MySQL

问题描述 投票:0回答:1

我在做这个问题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。谁能告诉我为什么会出现这种情况,如何修复我的代码?

先谢谢你的时间!

mysql sql subquery min
1个回答
1
投票

修改你的查询,如下图所示,选择最小事件日期对应的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
© www.soinside.com 2019 - 2024. All rights reserved.