Можете ли вы привести пример того, как можно сложить доходность в таблице ниже, используя только athena sql? Ожидаемый результат находится в крайнем правом столбце.
Сложный доход = (1 + предыдущий.день. Доход. Совокупный доход) * (1 + текущий. День. Доход) - 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,05) * (1 + 0,33) - 1
см. «оконные функции» в docs.aws.amazon.com/athena/latest/ug/…, где вы бы использовали отставание () для информации за предыдущий день
@Used_By_A Уже не могли бы вы поделиться примером того, как вы бы использовали функцию задержки в моем примере?


Задержка - это функция, которая используется вместе с 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().
где ожидаемые исходные данные результата?