Sql 查找每行给定时间之前的最后一个事件

Sql 查找每行给定时间之前的最后一个事件,sql,amazon-redshift,Sql,Amazon Redshift,我有两张桌子 搜索: user | eventtime a | 25/02/19 00:00 a | 25/02/19 00:03 a | 25/02/19 00:05 b | 25/02/19 00:00 b | 25/02/19 00:04 b | 25/02/19 00:07 user | eventtime a | 25/02/19 00:04 b | 25/02/19 00:04 b | 25/02/19 00:05 详细信息\

我有两张桌子

搜索:

user | eventtime
a    | 25/02/19 00:00
a    | 25/02/19 00:03
a    | 25/02/19 00:05
b    | 25/02/19 00:00
b    | 25/02/19 00:04
b    | 25/02/19 00:07
user | eventtime
a    | 25/02/19 00:04
b    | 25/02/19 00:04
b    | 25/02/19 00:05
详细信息\u点击次数:

user | eventtime
a    | 25/02/19 00:00
a    | 25/02/19 00:03
a    | 25/02/19 00:05
b    | 25/02/19 00:00
b    | 25/02/19 00:04
b    | 25/02/19 00:07
user | eventtime
a    | 25/02/19 00:04
b    | 25/02/19 00:04
b    | 25/02/19 00:05
现在,对于细节点击中的每个条目,我想用它的搜索时间来映射它,这是该用户在细节点击时间上或之前的最后一次搜索

因此,输出将是

user | eventtime      | searchtime
a    | 25/02/19 00:04 | 25/02/19 00:03
b    | 25/02/19 00:04 | 25/02/19 00:04
b    | 25/02/19 00:05 | 25/02/19 00:04
到目前为止,我已经试过了

select user, detail_hits.eventtime, 
max(searches.eventtime) over(partition by user)
from detail_hits
left join searches using(user)

但这不起作用

一种方法使用
左连接和聚合:

select dh.user, dh.eventtime, max(s.eventtime) as searchtime
from detail_hits dh left join
     searches s
     on dh.user = s.user and s.eventtime < dh.eventtime
group by dh.user, dh.eventtime;
选择dh.user、dh.eventtime、max(s.eventtime)作为搜索时间
从细节处点击dh左连接
搜索
在dh.user=s.user和s.eventtime