只查找一个值发生的时间戳比另一个值晚的记录



希望我能正确表达这个问题——

我有一个表,其中包含用户的ID号和一个包含'事件'的字段,例如'登录','做X', '做Y'等。因此,单个用户ID可能在该表中有大量记录。每条记录都有一个相关联的时间戳字段。

我正试图将这个表的查询放在一起,我只能找到'Did X'的用户id,发生的时间戳比'Did Y'更近。

有一个机会,一个用户可以多次'做X'或'做Y',但我只需要用户id谁'做X'比'做Y'最近。也有可能用户永远不会有"Did Y",但我正在寻找的用户至少会包含"Did X"。

我一直在尝试各种连接和自连接什么的,但我到目前为止罢工。感觉有一个简单的解决办法,我只是忽略了。

我感谢这里所有的帮助。

编辑:下面评论中提供的链接或多或少为我解决了这个问题。https://dbfiddle.uk/?rdbms=db2_11.1&小提琴= 263 f8394751590ab0d440c53b09e573a

如果我说对了…你可以从执行了操作x的用户那里获得操作y,而在执行了操作x后却不存在操作y

select * from tabla t1
where t1.action = "did X" 
and not exists (select * from tabla t2 where t2.userid = t.userid and t2.action = "did y" and t2.fecha > t1.Fecha)

希望这就是你的意思。

最新更新