Tenho duas tabelas :
[en_despesa]
cd_despesa
vc_nome
[en_lancamento_despesa]
cd_lancamento_despesa
cd_despesa
fl_valor
Quero fazer uma consulta que me retorne as sequintes colunas :
vc_nome, total, porcentagem
onde :
vc_nome é o nome da despesa;
total é a soma de todos os fl_valor, agrupados por despesa;
porcentagem é a porcentagem de cada valor em relação ao total geral;
já consigo retornar vc_nome e total assim :
select d.vc_nome, coalesce(sum(fl_valor), 0) as total from
en_despesa d inner join en_lancamento_despesa ld on d.cd_despesa = ld.cd_despesa
group by d.cd_despesa, d.vc_nome
o problema está na porcentagem.
Alguém saberia como resolver isso?
Consegui!
ficou +ou- assim
select vc_nome, total, (total/totalGeral)*100 as porcentagem from
(select tb1.vc_nome, coalesce(sum(fl_valor), 0) as total from
(select cd_despesa, vc_nome from en_despesa where cd_despesa_pai is null) as tb1
inner join en_lancamento_despesa ld on tb1.cd_despesa = ld.cd_despesa_principal
where dt_data >= '2006-06-01' and dt_data <= '2006-06-08'
group by tb1.cd_despesa, tb1.vc_nome
order by tb1.vc_nome) as tb2,
(select coalesce(sum(fl_valor), 0) as totalGeral from en_lancamento_despesa
where dt_data >= '2006-06-01' and dt_data <= '2006-06-08') as tbx
simplifiquei a descrição do meu problema pra facilitar o entendimento.
Mas minha situação real é um pouco diferente.