LeetCode#512游戏分析MySQL

LeetCode#512游戏分析MySQL,mysql,sql,subquery,min,Mysql,Sql,Subquery,Min,我在做这个问题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。有人能告诉我为什么会发生这种情况,以及如何修复我的代码吗 谢谢

我在做这个问题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。有人能告诉我为什么会发生这种情况,以及如何修复我的代码吗


谢谢你的时间

如下修改您的查询,以选择与最小事件日期相对应的玩家id、设备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

感谢您的快速响应,但这不起作用。您能展示一下您的数据和当前输出的示例吗?尝试使用窗口函数进行第二次查询。示例数据:{“标题”:{“活动”:[“玩家id”、“设备id”、“事件日期”、“玩过的游戏”]},行:{“活动”:[[1,2,”2016-03-01,5],[1,2,”2016-05-02,6],[1,3,”2015-06-25,1],[3,1,“2016-03-02”,0],[3,4,“2016-02-03”,5]}当前输出:{“标题:[“玩家id”,“设备id”],[1,2],[1,2],[1]应为:{“标题”:[“玩家id”、“设备id”],“值”:[[1,3],[3,4]}