所以我在计算投资组合的回报时遇到了麻烦。例如,下表中有以下值:
create table StockReturn (
Id int not null primary key auto_increment,
Datedate null,
Value decimal(10,2) null
);
insert into stockreturn values (1,'2000-1-1', 43534.12);
insert into stockreturn values (2,'2000-1-2', 41534.12);
insert into stockreturn values (5,'2000-1-2', 32341.12);
insert into stockreturn values (3,'2000-1-3', 46534.12);
insert into stockreturn values (4,'2000-1-4', 44234.12);
我想计算的是2000-1-2上的porfolio值相对于2000-1-1的返回百分比。请注意,我们还有多个日期相同的值。
我有下面的代码,但这给了我2000-1-3的错误值
select a.id, a.date, sum(a.value) as totalValueA, sum(b.value) as
totalValueB
from stockreturn a
left join stockreturn b on a.datum = b.datum+1
group by date;
Result:
1 2000-01-01 43534.12 Null
2 2000-01-02 73875.24 87068.24
3 2000-01-03 93068.24 73875.24
4 2000-01-04 44234.12 46534.12
我想看到的是第四列,名为“百分比回报”,它计算(value@2000-01-02-value@2000-01-01)/value@2000-01-01的值,并将其分配给日期2000-01-02。
1条答案
按热度按时间oxalkeyp1#
使用
lead()
: