Pular para o conteúdo

Fóruns Banco de dados Oracle Participação no Total Participação no Total

#100837
burga
Participante

    Qual é o total (100%)? É a somatória da coluna TOTAL?
    Essas coisas você tem que detalhar melhor, jogando assim sem detalhes fica difícil entender aonde você quer chegar…

    Mas tentando adivinhar o que você quer… Se for isso mesmo que eu estou pensando, onde 100% é a somatória da sua coluna TOTAL, e você quer saber a porcentagem de cada valor da coluna em cima de sua somatória, você pode usar isso:

    SELECT GCCADLINHA.DESCRICAO,SUM(C.VALORTOTAL) AS TOTAL,
    CASE WHEN MAX(GCCADPROD.DIFER) IN (0,6,7,8,10) THEN 'PRODUTOS'
    ELSE 'SERVICOS' END TIPO,
    SUM(C.VALORTOTAL) OVER () TOTAL_100_PCT
    FROM CONTRATOSPRODUTOS P JOIN CONTRATOS C
    ON (C.CODIGOCONTRATO = P.CODIGOCONTRATO AND C.FILIAL = P.FILIAL)
    JOIN GEMCO.CAD_ITPROD GCCADITPROD
    ON (GCCADITPROD.CODPRODDF LIKE (RPad(LPad(P.CODIGOPRODUTO, 5, '0'),6, '%')))
    JOIN GEMCO.CAD_PROD GCCADPROD
    ON (GCCADPROD.CODPROD = GCCADITPROD.CODPROD)
    JOIN GEMCO.CAD_LINHA GCCADLINHA
    ON (GCCADLINHA.CODLINHA = GCCADPROD.CODLINHA)
    WHERE C.DATACONTRATO BETWEEN '15/09/2011' AND '15/09/2011'
    AND GCCADPROD.DIFER IN (-4,0,6,7,8,10)
    GROUP BY GCCADLINHA.DESCRICAO ORDER BY MAX(GCCADLINHA.CODLINHA) DESC

    A partir daí você faz a regra de três como o Leandro já disse…