雅典娜SQL复合收益

时间:2018-09-14 00:55:17

标签: sql amazon-athena presto

您能否提供一个示例,说明如何仅使用athena sql在下表中组合收益?预期输出在最右边的列中。

复合收益=(1 +上一交易日复合收益)*(1 +上一交易日复合收益)-1。

如果day = 1,那么复合收益就是每日收益。

Day | Company | Daily Return | Compound Return (Expected Output)
----------------------------------------------
1   |A        |0.05          |0.05
2   |A        |0.33          |0.40
3   |A        |0.12          |0.56
1   |B        |0.21          |0.21
2   |B        |-0.05         |0.15

1 个答案:

答案 0 :(得分:0)

延迟是与over clause结合使用的函数。

select Day , Company , DailyReturn
     , lag(DailyReturn,1) over(partition by Company order by day) as PriorDayReturn
from yourtable

在此示例中,前一天的收益显示在每一行上,当没有(按公司)的先前收益(其中值将为NULL)时,请排除。

Day | Company | Daily Return | PriorDayReturn
----------------------------------------------
1   |A        |0.05          |NULL
2   |A        |0.33          |0.05
3   |A        |0.12          |0.33
1   |B        |0.21          |NULL
2   |B        |-0.05         |0.21

有关lag()over()

的详细信息,请参阅(您的朋友)文档。