Athena SQL复合返回

问题描述 投票:0回答:1

你能举例说明如何仅使用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
sql amazon-athena presto
1个回答
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()的详细信息,请参阅(您的朋友)文档

© www.soinside.com 2019 - 2024. All rights reserved.