Найти последнее событие перед данным временем для каждой строки - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть две таблицы.

Поиски:

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

Detail_hits:

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)

Но это не работает.

1 Ответ

0 голосов
/ 26 февраля 2019

Один метод использует left join и агрегацию:

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;
...