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