你能举例说明如何仅使用athena sql来复合下表中的回报吗?预期输出位于最右侧列。
复合回报=(1 + previous.day.compound.return)*(1 + current.day.return) - 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
滞后是一个与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()
的详细信息,请参阅(您的朋友)文档