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