sql - 使用 SQL LAG 函数计算股票 yield

标签 sql lag

我有一个股票价格表,我正在尝试计算每日返回:

Ticker       Date        price
ABC         01/01/13    100.00
ABC         01/02/13    101.50
ABC         01/03/13     99.80
ABC         01/04/13     95.50
ABC         01/05/13     78.00
XYZ         01/01/13     11.50
XYZ         01/02/13     12.10
XYZ         01/03/13     13.15
XYZ         01/04/13     14.10
XYZ         01/05/13     15.55

我有一个使用 Lag 函数计算返回的公式,但我不知道如何在处理新的股票代码时将值重新设置为 NULL。

它使用 ABC 2013 年 1 月 5 日的价格来计算 XYZ 2003 年 1 月 1 日的返回。 XYZ 的 01/01/03 返回应该为 NULL。

Ticker       Date        price    RETURN
ABC         01/01/13    100.00    NULL
ABC         01/02/13    101.50    1.50
ABC         01/03/13     99.80   -1.67
ABC         01/04/13     95.50   -4.31
ABC         01/05/13     78.00  -18.32
XYZ         01/01/13     11.50  -85.26
XYZ         01/02/13     12.10    5.22
XYZ         01/03/13     13.15    8.68
XYZ         01/04/13     14.10    7.22
XYZ         01/05/13     15.55   10.28

这是我的脚本:

SELECT Ticker,Date, price,((price / lag(price, 1) OVER (ORDER BY Ticker, [Date])) - 1)* 100 AS 'RETURN'
FROM [dbo].[Temp]
Order by Ticker, Date

我需要创建一个循环来计算正确的返回吗?

最佳答案

您想要分区:

SELECT Ticker, Date, price,
       ((price / lag(price, 1) OVER (PARTITION BY Ticker ORDER BY [Date])) - 1)* 100 AS daily_return
FROM [dbo].[Temp]
Order by Ticker, Date;

关于sql - 使用 SQL LAG 函数计算股票 yield ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48725786/

相关文章:

mysql - 如何在实体属性值(EAV)模型中查询实体的所有信息?

javascript - 是什么导致 webrtc 数据通道消息出现这种 >1000 毫秒的滞后?

android - 单个 ScrollView 中多个图像的滞后

python - pyautogui.press() 在调用时导致延迟

sql - 在 Access 97 中的 SQL 查询中 Access 另一个受密码保护的数据库

sql - 如何通过分组和计数在 SSIS 中获得所需的输出?

带有--where子句的mysqldump不起作用

sql - ORDER BY 只适用于列吗?

javascript - 随着时间的推移滞后问题javascript

ruby-on-rails - Rails 在记录 200 OK 后在做什么? (调试响应时间慢)