HIVE: получить все записи, где предыдущая запись (по метке времени) является конкретным значением

Я делаю анализ пути, где мне нужно увидеть, куда ведет одна страница. Как мне написать запрос, который получает мне все записи, которые имеют предыдущую запись определенного значения.

Например:

col1 timestamp
a    1   
b    2
a    3
c    4
b    5
e    6

Я хотел бы вернуть только с и б

Я пытаюсь использовать функции управления окнами, чтобы сделать это, но у меня нет опыта с ними и полностью потерпел неудачу:-(

Спасибо за ответы!

2 ответа

Решение

Вы бы использовали lag() функция,, и подзапрос:

select t.*
from (select t.*, lag(col1) over (order by timestamp) as prev_col1
      from t
     ) t
where prev_col1 = 'a';

Функции Lead и Lag в Oracle помогут вам достичь ожидаемых результатов.

Примеры

Другие вопросы по тегам