Афина SQL Compounding Возвращает - PullRequest
       9

Афина SQL Compounding Возвращает

0 голосов
/ 14 сентября 2018

Можете ли вы привести пример того, как вы бы сложили результаты в таблице ниже, используя только athena sql? Ожидаемый результат находится в крайнем правом столбце.

Сложный доход = (1 + prior.day.compound.return) * (1 + current.day.return) - 1.

Если день = 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 голосов
/ 14 сентября 2018

Lag - это функция, которая используется вместе с 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()

...