none
calculo do percentual dentro do select RRS feed

  • Pergunta

  • Tenho o seguinte comando :
    SELECT DISTINCT AN_DEPARTAMENTO, GRAU_INSTRUCAO, COUNT(GRAU_INSTRUCAO) AS TOTAL_FUNC FROM TAB_DADOS_FUNCIONARIO AS F WHERE AN_DEPARTAMENTO = 'Administrativo' AND NOT GRAU_INSTRUCAO IS NULL GROUP BY AN_DEPARTAMENTO,GRAU_INSTRUCAO ORDER BY AN_DEPARTAMENTO,GRAU_INSTRUCAO

    me da o seguinte resultado:

    AN_DEPARTAMENTO GRAU_INSTRUCAO               TOTAL_FUNC
    ----------------------- --------------------------- ------------------------------ -----------
    Administrativo        Ensino médio completo            10
    Administrativo        Ensino médio incompleto          1
    Administrativo        Superior completo                    1
    Administrativo        Superior incompleto - Cursando 13

    ao total, tenho 25 funcionarios no setor Administrativo..
    o que preciso,é colocar ao lado do TOTAL_FUNC, o percentual que representa este nr, exemplo 10 funcionarios de ensino médio completo do total de 25 representa 40 %, queria que estes 40% aparececem em outra coluna ao lado do 10...

    fiz o comando abaixo mas não funcionou:

    SELECT DISTINCT AN_DEPARTAMENTO, GRAU_INSTRUCAO, COUNT(GRAU_INSTRUCAO) AS TOTAL_FUNC ,(select COUNT(GRAU_INSTRUCAO) from TAB_DADOS_FUNCIONARIO AS V where (V.AN_DEPARTAMENTO = F.AN_DEPARTAMENTO) AND (V.GRAU_INSTRUCAO = F.GRAU_INSTRUCAO)) / COUNT(F.GRAU_INSTRUCAO) as percentual FROM TAB_DADOS_FUNCIONARIO AS F
    WHERE AN_DEPARTAMENTO = 'Administrativo' AND NOT GRAU_INSTRUCAO IS NULL
    GROUP BY AN_DEPARTAMENTO,GRAU_INSTRUCAO
    ORDER BY AN_DEPARTAMENTO,GRAU_INSTRUCAO

    o resultado é esse:

    AN_DEPARTAMENTO GRAU_INSTRUCAO           TOTAL_FUNC       percentual
    ------------------------------------------------- ------------------------------ ----------- -----------
    Administrativo        Ensino médio completo             10              1
    Administrativo        Ensino médio incompleto           1               1
    Administrativo        Superior completo                     1               1
    Administrativo        Superior incompleto - Cursando 13               1

    poderíam me ajudar ???

    obrigado


    Fernando da Costa
    sexta-feira, 30 de outubro de 2009 12:10

Respostas

  • segue sugestão:

    -- TABELA TEMPORÁRIA
    DECLARE @TAB_DADOS_FUNCIONARIO TABLE (AN_DEPARTAMENTO VARCHAR(80), Funcionario VARCHAR(80),GRAU_INSTRUCAO VARCHAR(80))
    
    -- POPULANDO A TABELA
    SET NOCOUNT ON
    INSERT INTO @TAB_DADOS_FUNCIONARIO
    SELECT 'Administrativo','JANICE FELICIO ','Ensino médio completo' UNION
    SELECT 'Administrativo','LAURA MARQUES ','Ensino médio completo' UNION
    SELECT 'Administrativo','ADRIANA SANTOS ','Ensino médio completo' UNION
    SELECT 'Administrativo','DEISE DA ','Ensino médio completo' UNION
    SELECT 'Administrativo','ORLANDA BOSCO ','Ensino médio completo' UNION
    SELECT 'Administrativo','ANA CRISTINA ','Ensino médio completo' UNION
    SELECT 'Administrativo','JUDITH IZABEL ','Ensino médio completo' UNION
    SELECT 'Administrativo','MARIA HELENA ','Ensino médio completo' UNION
    SELECT 'Administrativo','ALCENIR THIAGO ','Ensino médio completo' UNION
    SELECT 'Administrativo','LUZIA CARLOS ','Ensino médio completo' UNION
    SELECT 'Administrativo','MARCIA MOREIRA ','Ensino médio incompleto' UNION
    SELECT 'Administrativo','ROSE MARY ','Superior completo' UNION
    SELECT 'Administrativo','ANIELA DARIENZO ','Superior incompleto - Cursando' UNION
    SELECT 'Administrativo','LEONICE VITAL ','Superior incompleto - Cursando' UNION
    SELECT 'Administrativo','MARCIA ZILA ','Superior incompleto - Cursando' UNION
    SELECT 'Administrativo','LUCIENE ALMEIDA ','Superior incompleto - Cursando' UNION
    SELECT 'Administrativo','JANETE JANE ','Superior incompleto - Cursando' UNION
    SELECT 'Administrativo','MARIA INES ','Superior incompleto - Cursando' UNION
    SELECT 'Administrativo','NILZA MARIA ','Superior incompleto - Cursando' UNION
    SELECT 'Administrativo','ROSA MARIA ','Superior incompleto - Cursando' UNION
    SELECT 'Administrativo','GLORIA MARIA ','Superior incompleto - Cursando' UNION
    SELECT 'Administrativo','GILDETE DA ','Superior incompleto - Cursando' UNION
    SELECT 'Administrativo','MARIA AUXILIADORA ','Superior incompleto - Cursando' UNION
    SELECT 'Administrativo','ZENAIDE BATISTA ','Superior incompleto - Cursando' UNION
    SELECT 'Administrativo','ROSANGELA RODRIGUES ','Superior incompleto - Cursando' UNION
    SELECT 'Financeiro','MARCAL FERREIRA ','Superior completo' UNION
    SELECT 'Financeiro','WALMA MARIA ','Superior completo' UNION
    SELECT 'Financeiro','LILIAN DOS ','Superior completo' UNION
    SELECT 'Financeiro','MARILENA ROCHA ','Superior completo' UNION
    SELECT 'Financeiro','JUSSARA GONCALVES ','Superior completo' 
    
    
    -- SELECT FINAL CALCULANDO O PERCENTUAL
    SELECT  
        AN_DEPARTAMENTO,
        GRAU_INSTRUCAO,
        COUNT(GRAU_INSTRUCAO)  AS TOTAL_FUNC ,
        PERCENTUAL = CAST(CAST(COUNT(AN_DEPARTAMENTO) AS NUMERIC(4,0)) / CAST(SUM(COUNT(GRAU_INSTRUCAO)) OVER (PARTITION BY AN_DEPARTAMENTO) AS NUMERIC(4,0)) * 100 AS INT)
    FROM            
        @TAB_DADOS_FUNCIONARIO AS F
    WHERE           
        AN_DEPARTAMENTO = 'Administrativo'
    AND GRAU_INSTRUCAO IS NOT NULL
    GROUP BY        
        AN_DEPARTAMENTO, GRAU_INSTRUCAO
    ORDER BY        
        AN_DEPARTAMENTO, GRAU_INSTRUCAO



    Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino
    sexta-feira, 30 de outubro de 2009 14:26

Todas as Respostas

  • Para calcular o percentual, basta você pegar o total de funcionarios de um determinado departamento dividir pelo total geral de funcionarios pesquisados e multiplicar por 100





    Espero ter ajudado
    Anderson - DBA/MCP/MCTS/MCITP/MCT - Sua pergunta foi respondida ? Marque-a como tal! www.myspace.com/andersondpa
    sexta-feira, 30 de outubro de 2009 12:25
  • Anderson, esse calculo eu sei porem gostaria que alguem colocasse no comando como faço pois não estou conseguindo...obrigado pela ajuda...
    Fernando da Costa
    sexta-feira, 30 de outubro de 2009 12:32
  • Qual versão do SQL Server vc está utilizando ?


    Anderson - DBA/MCP/MCTS/MCITP/MCT - Sua pergunta foi respondida ? Marque-a como tal! www.myspace.com/andersondpa
    sexta-feira, 30 de outubro de 2009 12:41
  • 2005
    Fernando da Costa
    sexta-feira, 30 de outubro de 2009 12:42
  • Fernando nao conheço a estrutura das tuas tabelas, contudo acredito que a solução seja parecida com este exemplo:


    SELECT

     

    DISTINCT

    AN_DEPARTAMENTO

    ,

    GRAU_INSTRUCAO

    ,

     

    COUNT(GRAU_INSTRUCAO) AS TOTAL_FUNC ,

     

     

    ((COUNT(AN_DEPARTAMENTO) / COUNT(GRAU_INSTRUCAO)) * 100) AS PERCENTUAL

    FROM

     

    TAB_DADOS_FUNCIONARIO

    AS F

     

    WHERE

     

    AN_DEPARTAMENTO

    = 'Administrativo' AND NOT GRAU_INSTRUCAO IS NULL

    GROUP

     

    BY

    AN_DEPARTAMENTO

    ,GRAU_INSTRUCAO

    ORDER

     

    BY

    AN_DEPARTAMENTO

    ,GRAU_INSTRUCAO



    Espero ter ajudado


    Anderson - DBA/MCP/MCTS/MCITP/MCT - Sua pergunta foi respondida ? Marque-a como tal! www.myspace.com/andersondpa
    sexta-feira, 30 de outubro de 2009 12:56
  • ANDERSON, é quase isso ..porem o percentual em todos aparece 100

    AN_DEPARTAMENTO GRAU_INSTRUCAO           TOTAL_FUNC         PERCENTUAL

    -------------------------------------------------- ------------------------------ ----------- -----------

    Administrativo        Ensino médio completo              10               100

    Administrativo        Ensino médio incompleto            1                100

    Administrativo        Superior completo                     1                 100

    Administrativo        Superior incompleto - Cursando 13                100


    Fernando da Costa
    sexta-feira, 30 de outubro de 2009 13:52
  • segue sugestão:

    -- TABELA TEMPORÁRIA
    DECLARE @TAB_DADOS_FUNCIONARIO TABLE (AN_DEPARTAMENTO VARCHAR(80), Funcionario VARCHAR(80),GRAU_INSTRUCAO VARCHAR(80))
    
    -- POPULANDO A TABELA
    SET NOCOUNT ON
    INSERT INTO @TAB_DADOS_FUNCIONARIO
    SELECT 'Administrativo','JANICE FELICIO ','Ensino médio completo' UNION
    SELECT 'Administrativo','LAURA MARQUES ','Ensino médio completo' UNION
    SELECT 'Administrativo','ADRIANA SANTOS ','Ensino médio completo' UNION
    SELECT 'Administrativo','DEISE DA ','Ensino médio completo' UNION
    SELECT 'Administrativo','ORLANDA BOSCO ','Ensino médio completo' UNION
    SELECT 'Administrativo','ANA CRISTINA ','Ensino médio completo' UNION
    SELECT 'Administrativo','JUDITH IZABEL ','Ensino médio completo' UNION
    SELECT 'Administrativo','MARIA HELENA ','Ensino médio completo' UNION
    SELECT 'Administrativo','ALCENIR THIAGO ','Ensino médio completo' UNION
    SELECT 'Administrativo','LUZIA CARLOS ','Ensino médio completo' UNION
    SELECT 'Administrativo','MARCIA MOREIRA ','Ensino médio incompleto' UNION
    SELECT 'Administrativo','ROSE MARY ','Superior completo' UNION
    SELECT 'Administrativo','ANIELA DARIENZO ','Superior incompleto - Cursando' UNION
    SELECT 'Administrativo','LEONICE VITAL ','Superior incompleto - Cursando' UNION
    SELECT 'Administrativo','MARCIA ZILA ','Superior incompleto - Cursando' UNION
    SELECT 'Administrativo','LUCIENE ALMEIDA ','Superior incompleto - Cursando' UNION
    SELECT 'Administrativo','JANETE JANE ','Superior incompleto - Cursando' UNION
    SELECT 'Administrativo','MARIA INES ','Superior incompleto - Cursando' UNION
    SELECT 'Administrativo','NILZA MARIA ','Superior incompleto - Cursando' UNION
    SELECT 'Administrativo','ROSA MARIA ','Superior incompleto - Cursando' UNION
    SELECT 'Administrativo','GLORIA MARIA ','Superior incompleto - Cursando' UNION
    SELECT 'Administrativo','GILDETE DA ','Superior incompleto - Cursando' UNION
    SELECT 'Administrativo','MARIA AUXILIADORA ','Superior incompleto - Cursando' UNION
    SELECT 'Administrativo','ZENAIDE BATISTA ','Superior incompleto - Cursando' UNION
    SELECT 'Administrativo','ROSANGELA RODRIGUES ','Superior incompleto - Cursando' UNION
    SELECT 'Financeiro','MARCAL FERREIRA ','Superior completo' UNION
    SELECT 'Financeiro','WALMA MARIA ','Superior completo' UNION
    SELECT 'Financeiro','LILIAN DOS ','Superior completo' UNION
    SELECT 'Financeiro','MARILENA ROCHA ','Superior completo' UNION
    SELECT 'Financeiro','JUSSARA GONCALVES ','Superior completo' 
    
    
    -- SELECT FINAL CALCULANDO O PERCENTUAL
    SELECT  
        AN_DEPARTAMENTO,
        GRAU_INSTRUCAO,
        COUNT(GRAU_INSTRUCAO)  AS TOTAL_FUNC ,
        PERCENTUAL = CAST(CAST(COUNT(AN_DEPARTAMENTO) AS NUMERIC(4,0)) / CAST(SUM(COUNT(GRAU_INSTRUCAO)) OVER (PARTITION BY AN_DEPARTAMENTO) AS NUMERIC(4,0)) * 100 AS INT)
    FROM            
        @TAB_DADOS_FUNCIONARIO AS F
    WHERE           
        AN_DEPARTAMENTO = 'Administrativo'
    AND GRAU_INSTRUCAO IS NOT NULL
    GROUP BY        
        AN_DEPARTAMENTO, GRAU_INSTRUCAO
    ORDER BY        
        AN_DEPARTAMENTO, GRAU_INSTRUCAO



    Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino
    sexta-feira, 30 de outubro de 2009 14:26
  • obrigado Leonardo..funcionou...

    Fernando da Costa
    sexta-feira, 30 de outubro de 2009 14:39
  • ok Fernando,
    obrigado pelo retorno, se possível depois marque como resposta para q outros tb possam se beneficiar com este conteúdo.

    um abraço.
    Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino
    sexta-feira, 30 de outubro de 2009 14:50