none
Problema com Porcentagem

    Question

  • Pessoal, boa tarde

    Preciso de um simples código sql server que calcule a porcentagem de uma tabela, de um determinado item em relação ao mês, calculando a porcentagem de quantos itens foram efetuados em cada mês

    só cheguei até os totais e não consigo calcular a porcentagem somente com o Id da tabela

    o que eu consegui foi:

    SELECT COUNT (idMunicipal) as total, DATENAME(month, data) AS Mes

    FROM tbMunicipal

    group by DATENAME(month, data)

    order by DATENAME(month, data)

    Não consigo sair daqui, alguém pode me ajudar

    Monday, February 18, 2013 7:16 AM

Answers

  • Cesar,

     Que isso, estamos aqui para ajudar.

    Esta query deve resolver seu problema

    select CAST(COUNT(*)*100/(SELECT COUNT(*) FROM tbAitMunicipal) AS VARCHAR(100)) + '%'  as Porcentagem ,DATENAME(month, data) as Mês 
    from tbAitMunicipal

    WHERE DATEPART(YEAR, ANO) = @ANO

    GROUP BY DATENAME(month, data)
    ORDER BY Mês


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    Wednesday, February 20, 2013 11:47 AM

All replies

  • Cesar,

    Poste sua estrutura de dados (Um exemplo claro...) e um exemplo de como quer que ele fique, sem isso não temos informações o sulficiente para te ajudar.


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    Monday, February 18, 2013 10:41 AM
  • Fabrizzio boa tarde:

    Sou policial e estou criando uma aplicação de gerenciamento de Autuações de transito em c# com o visual, que servirá para o lugar onde eu trabalho e pro meu TCC na faculdade e esse código é para carregar o dataset para um grafico de pizza No chart control e hoje pela manhã eu acho que consegui, depois de semanas tentando, vc pode dar uma olhada pra mim:

    select  count(*)*100 / (select COUNT (*) from tbAitMunicipal)  as Porcentagem ,DATENAME(month, data) as Mês 
    from tbAitMunicipal
    group by DATENAME(month, data)
    order by DATENAME(month, data)

    o resultado é

    26 February
    63 January
    10 March

    ou seja de todas as autuações Municipais 63% foram em janeiro(é claro isso é só um exemplo)

    No visual eu coloco acima do código SET LANGUAGE PORTUGUESE pra traduzir os meses em português dá erro mas funciona!!!!

    só faltou o simbolo de Porcentagem(%)

    O que acha? dá pra melhorar? por casas decimais? como por em ordem alfabética os meses?

    desculpa a encheção de saco

    Brigadão!!!!!

    Monday, February 18, 2013 6:54 PM
  • Cesar,

    É uma solução sim.

    Colocar em ordem alfabetica: Adicione um ORDER BY Mês no final de sua query.

    Adicionar o percentual: CAST(COUNT(*)*100/(SELECT COUNT(*) FROM tbAitMunicipal) AS VARCHAR(100)) + '%'.


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    Monday, February 18, 2013 6:58 PM
  • Fabrizzio:

    Bom dia,

    1ºEu te falei errado, não queria agrupar por ordem alfabética e sim por ordem de mês mesmo assim janeiro, fevereiro, março, abril.....

    2º No grafico quero colocar uma textBox pro usuario colocar o ano, então como faço pra incluir nessa consulta, um where pra que seja filtrado o ano...

    EX:

    select CAST(COUNT(*)*100/(SELECT COUNT(*) FROM tbAitMunicipal) AS VARCHAR(100)) + '%'  as Porcentagem ,DATENAME(month, data) as Mês 
    from tbAitMunicipal

    WHERE ANO = @ANO(SEI-LÁ) ????????? = ?????  //(ESSE CAMPO SERIA LIGADO COM A TEXTBOX COM O ANO QUE O USUÁRIO IRIA DIGITAR)
    GROUP BY DATENAME(month, data)
    ORDER BY Mês

    Mais uma vez me desculpe a encheção de saco, mas isto está me ajudando muito, brigadão!!!!

    Cesar Culiche


    Wednesday, February 20, 2013 11:45 AM
  • Cesar,

     Que isso, estamos aqui para ajudar.

    Esta query deve resolver seu problema

    select CAST(COUNT(*)*100/(SELECT COUNT(*) FROM tbAitMunicipal) AS VARCHAR(100)) + '%'  as Porcentagem ,DATENAME(month, data) as Mês 
    from tbAitMunicipal

    WHERE DATEPART(YEAR, ANO) = @ANO

    GROUP BY DATENAME(month, data)
    ORDER BY Mês


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    Wednesday, February 20, 2013 11:47 AM