Компонентные возвраты Athena SQL

Можете ли вы привести пример того, как можно сложить доходность в таблице ниже, используя только 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

где ожидаемые исходные данные результата?

Zaynul Abadin Tuhin 14.09.2018 03:03

Столбец "Ежедневная доходность". (1 + 0,05) * (1 + 0,33) - 1

Entr 14.09.2018 03:24

см. «оконные функции» в docs.aws.amazon.com/athena/latest/ug/…, где вы бы использовали отставание () для информации за предыдущий день

Paul Maxwell 14.09.2018 03:24

@Used_By_A Уже не могли бы вы поделиться примером того, как вы бы использовали функцию задержки в моем примере?

Entr 14.09.2018 03:27
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
4
830
1

Ответы 1

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

Другие вопросы по теме