Valores Acumulados em um campo DB

Boa Tarde a todos,
Nestes dias venho tentando preencher um campo acumulado progressivo e esbarrei em “n” sugestões, porem achei umas sem eficiencia ou por minha falta de conhecimento profundo, outros com códigos extensos e de difícil compreensão.
Vi alguns métodos em php com MySQL e vi outros em MYSQ. Conclusão aprendi algumas coisas e nao consegui resolver.
O que preciso criar mecanismo para a coluna ACUMULADO da tabela Diarias

Vou passar aqui uma imagem de um pdf gerado por uma query.
Dependendo da sua necessidade, as coisas podem se tornar complexas. Resultados simples, rotinas simples, resultados mais complexos, rotinas mais complexas. Seu desenvolvimento como programador depende da sua capacidade de evoluir em construções de rotinas cada vez mais complexas, não tenha medo de enfrentar as complexabilidades e não ache que tudo se resolve com códigos simples.

select 

DATE_FORMAT(f.DataFinanc,'%w') as dia_semana, 
day(f.DataFinanc) as dia,
(
select sum(f2.vNF * (case when t2.flag_faturamento = '-' then -1 else 1 end)) 
from fatura f2 inner join tipo_nota t2 on f2.Tipo_Nota=t2.tipo_nota
where f2.Status_Fat<>9 and t2.flag_faturamento in ('+','-') and year(f2.datafinanc)=year(f.DataFinanc) and month(f2.datafinanc)=month(f.DataFinanc) and day(f2.datafinanc) <= day(f.DataFinanc)
) as total_vendas_ac,
(
select count(*) 
from fatura f2 inner join tipo_nota t2 on f2.Tipo_Nota=t2.tipo_nota
where f2.Status_Fat<>9 and t2.flag_faturamento in ('+','-') and year(f2.datafinanc)=year(f.DataFinanc) and month(f2.datafinanc)=month(f.DataFinanc) and day(f2.datafinanc) <= day(f.DataFinanc)
) as nro_vendas_ac,
(
select round(sum(f2.vNF * (case when t2.flag_faturamento = '-' then -1 else 1 end)) / count(*),2)
from fatura f2 inner join tipo_nota t2 on f2.Tipo_Nota=t2.tipo_nota
where f2.Status_Fat<>9 and t2.flag_faturamento in ('+','-') and year(f2.datafinanc)=year(f.DataFinanc) and month(f2.datafinanc)=month(f.DataFinanc) and day(f2.datafinanc) <= day(f.DataFinanc)
) as preco_medio_ac,

day(f.DataFinanc) as dia2,
sum(f.vNF * (case when t.flag_faturamento = '-' then -1 else 1 end)) as vtotal, 
count(*) as nro_vendas,
round(sum(f.vNF * (case when t.flag_faturamento = '-' then -1 else 1 end)) / count(*),2) as preco_medio

from 
fatura f 
inner join tipo_nota t on f.Tipo_Nota=t.tipo_nota

where 
f.Status_Fat<>9 
and t.flag_faturamento in ('+','-')
and year(f.DataFinanc) = $ano  and month(f.DataFinanc)= $mes
group by 
year(f.DataFinanc),  
month(f.DataFinanc), 
day(f.DataFinanc) 

A solução está em criar sub select´s como colunas acumuladas, onde a condição where limita os registros até aquele ponto do registro principal.

Select (select sum(b.valor) as from tabela b where b.data<= a.data) as acumulado from tabela a