Я изо всех сил пытаюсь найти способ оценить события, используя SQL. Цель состоит в том, чтобы увеличивать ранг всякий раз, когда событие происходило более чем delta
секунд (например, 1 секунда) от предыдущего наблюдения. Пока моя попытка показана ниже:
select a.event_time, a.user_name, a.object_name, a.rnk, case when a.ddif <= 1000 then 0 else 1 end as new_query,
case when a.ddif <= 1000 then 0 else rnk end as new_rnk
from (
select *, rank() OVER (PARTITION BY user_name ORDER BY event_time) AS rnk,
date_diff('second',lag(event_time) OVER (PARTITION BY user_name ORDER BY event_time),event_time) as ddif
from tmp
) a
Но она дает мне только следующие результаты, и я до сих пор не знаю, как добиться результатов в yellow
(любой из них работает для меня отлично) ,
Буду признателен за любую помощь в этом.
Обратите внимание: я использую Presto DB , поэтому я ограничен этим механизмом запросов.