Is this what you are looking for? Note the nested sum function inside sum()over()
create table myData(
date date
,top_level text
,second_level text
,value int
);
insert into myData values('2012-12-01','A', 'A1', 12);
insert into myData values('2012-12-01','A', 'A2', 19);
insert into myData values('2012-12-01','B', 'B1', 10);
insert into myData values('2012-12-01','B', 'B2', 15);
insert into myData values('2013-01-01','A', 'A1', 10);
insert into myData values('2013-01-01','A', 'A2', 7);
insert into myData values('2013-01-01','B', 'B1', 20);
insert into myData values('2013-01-01','B', 'B2', 35);
select
date
,top_level
,sum(value) as value_total
,sum(sum(value))over(partition by top_level order by date) as value_running_total
from myData
group by date, top_level
order by top_level, date;
returns:
date; top_level; value_total; value_running_total
"2012-12-01";"A";31;31
"2013-01-01";"A";17;48
"2012-12-01";"B";25;25
"2013-01-01";"B";55;80