Resultado de total divido por quantidade em porcentagem
Bom dia....necessito de ajuda nesse resultado, obter valor total e o valor de cada Quant. dividido pelo total resultado em porcentagem.
Cod_casa Tipo Quant. Porc.Total
1 Carro 4 ?
2 Carro 1 ?
3 Carro 4 ?
4 Carro 0 ?
5 Carro 0 ?
6 Carro 1 ?
7 Carro 1 ?
8 Carro 5 ?
9 Carro 4 ?
10 Carro 5 ?
11 Carro 1 ?
12 Carro 4 ?
13 Carro 6 ?
14 Carro 2 ?
Total ?
Cod_casa Tipo Quant. Porc.Total
1 Carro 4 ?
2 Carro 1 ?
3 Carro 4 ?
4 Carro 0 ?
5 Carro 0 ?
6 Carro 1 ?
7 Carro 1 ?
8 Carro 5 ?
9 Carro 4 ?
10 Carro 5 ?
11 Carro 1 ?
12 Carro 4 ?
13 Carro 6 ?
14 Carro 2 ?
Total ?
Edivaldo Souza
Curtidas 0
Respostas
Arthur Heinrich
19/12/2022
Você precisa de duas soluções independentes, uma para calcular os percentuais, que utiliza expressões analíticas, e outro para calcular o total, que requer um group by múltiplo. Nem todos os bancos possuem estes recursos.
Para agrupar pelo tipo (Carro 1, Carro 2, ...), não poderemos exibir o número da casa.
Acho que sua query ficaria mais ou menos assim:
Para agrupar pelo tipo (Carro 1, Carro 2, ...), não poderemos exibir o número da casa.
Acho que sua query ficaria mais ou menos assim:
with
dados as
( select
nvl(tipo,'Total') tipo,
1 qtde,
round(100.0/(count(1) over (partition by 1)),1) perc
from tabela )
select
nvl(tipo,'Total') tipo, sum(qtde) qtde, sum(perc) perc
from dados
group by grouping sets ((),(tipo))
order by dados.tipo nulls last;
TIPO QTDE PERC
--------- ---------- ----------
Carro 0 2 14,2
Carro 1 4 28,4
Carro 2 1 7,1
Carro 4 4 28,4
Carro 5 2 14,2
Carro 6 1 7,1
Total 14 99,4
7 rows selected.
GOSTEI 0
Arthur Heinrich
19/12/2022
Corrigindo, já que arredondei antes de somar e o total não deu 100%.
with
dados as
( select
nvl(tipo,'Total') tipo,
1 qtde,
100.0/(count(1) over (partition by 1)) perc
from tabela )
select
nvl(tipo,'Total') tipo, sum(qtde) qtde, round(sum(perc),1) perc
from dados
group by grouping sets ((),(tipo))
order by dados.tipo nulls last;
TIPO QTDE PERC
-------- ---------- ----------
Carro 0 2 14,3
Carro 1 4 28,6
Carro 2 1 7,1
Carro 4 4 28,6
Carro 5 2 14,3
Carro 6 1 7,1
Total 14 100
7 rows selected.
GOSTEI 0