Resultado de total divido por quantidade em porcentagem

19/12/2022

0

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 ?
Edivaldo Souza

Edivaldo Souza

Responder

Posts

27/12/2022

Arthur Heinrich

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:

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. 

Responder

27/12/2022

Arthur Heinrich

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. 
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar