Esta aqui foi uma sollução que deu certo pra mim. no caso é só subustituir
eu estava com o mesmo problema rsrs
espero ter ajudado
set @soma = 0;
set @soma1 = 0;
set @soma2 = 0;
set @soma3 = 0;
set @soma4 = 0;
select p.id_produto, p.descricao, p.preco_venda, sum(iv.qtd) as qtd_vendida,
round((sum(iv.qtd) * p.preco_venda), 2) as valor_total,
round((select SUM(qtd * preco_venda) from produto, itens_venda where produto_id = id_produto), 2) as total,
round(((sum(iv.qtd) * p.preco_venda)/(select SUM(qtd * preco_venda) from produto, itens_venda where produto_id = id_produto) * 100), 2) as percentual,
(select @soma := @soma + round(((sum(iv.qtd) * p.preco_venda)/(select SUM(qtd * preco_venda) from produto, itens_venda where produto_id = id_produto) * 100), 2)) as acumulado,
CASE
when (select @soma3 := @soma3 + round(((sum(iv.qtd) * p.preco_venda)/(select SUM(qtd * preco_venda) from produto, itens_venda where produto_id = id_produto) * 100), 2)) > 90.00 then "C"
when (select @soma2 := @soma2 + round(((sum(iv.qtd) * p.preco_venda)/(select SUM(qtd * preco_venda) from produto, itens_venda where produto_id = id_produto) * 100), 2)) > 70.00 then "B"
when (select @soma1 := @soma1 + round(((sum(iv.qtd) * p.preco_venda)/(select SUM(qtd * preco_venda) from produto, itens_venda where produto_id = id_produto) * 100), 2)) < 71.00 then "A"
when (select @soma4 := @soma4 + round(((sum(iv.qtd) * p.preco_venda)/(select SUM(qtd * preco_venda) from produto, itens_venda where produto_id = id_produto) * 100), 2)) is null then "D"
end
as classificacao,
v.data_venda
from produto p
left join itens_venda iv
on iv.produto_id = p.id_produto
left join venda v
on iv.venda_id = v.id_venda
group by p.id_produto
having cast(v.data_venda as DATE) between '2017-07-20' and '2017-08-09' or v.data_venda is null
order by valor_total DESC, p.id_produto ASC