HIVE:获取前面记录(按时间戳)为特定值的所有记录
HIVE: Get all records where preceding record (by timestamp) is a specific value
我正在进行路径分析,我需要查看一页指向何处。我如何编写一个查询来获取所有具有特定值的前记录的记录。
例如:
col1 timestamp
a 1
b 2
a 3
c 4
b 5
e 6
我只想 return c 和 b
我正在尝试使用窗口函数来执行此操作,但我没有使用它们的经验并且完全失败了:-(
感谢您的回答!
您将使用 lag()
函数。 . .和一个子查询:
select t.*
from (select t.*, lag(col1) over (order by timestamp) as prev_col1
from t
) t
where prev_col1 = 'a';
Oracle 的 Lead 和 Lag 函数将帮助您达到预期的结果。
我正在进行路径分析,我需要查看一页指向何处。我如何编写一个查询来获取所有具有特定值的前记录的记录。
例如:
col1 timestamp
a 1
b 2
a 3
c 4
b 5
e 6
我只想 return c 和 b
我正在尝试使用窗口函数来执行此操作,但我没有使用它们的经验并且完全失败了:-(
感谢您的回答!
您将使用 lag()
函数。 . .和一个子查询:
select t.*
from (select t.*, lag(col1) over (order by timestamp) as prev_col1
from t
) t
where prev_col1 = 'a';
Oracle 的 Lead 和 Lag 函数将帮助您达到预期的结果。