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