Sql =如何用时间序列的价格计算回报向量?

use*_*693 1 sql oracle

我有一个表格,其中列有pricedate,按升序排序.我需要从这里计算一个返回向量return = price ( i) / price ( i- 1).时间不是基于时间的,这意味着一个记录可以在9h34,下一个记录可以在9h35,然后是9h40等...

我找到了以下主题:SQL语法用于计算返回数据的结果,但在Oracle中我不能在子查询中使用order by,你能帮帮我吗?

And*_*mar 6

在Oracle中,您可以使用lag分析函数:

select 
     price / (lag(price) over (order by i))
,    ...
from PriceHistory
Run Code Online (Sandbox Code Playgroud)

在此处,lag(price) over (order by i)返回列中排序的集合中上一行的价格i.