Ir para conteúdo

Quantidade de funções por setor


Edivan

Posts Recomendados


  • Tópicos Que Criei:  22
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  76
  • Conteúdo/Dia:  0.01
  • Reputação:   1
  • Pontos/Conquistas:  602
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  52

Olá pessoal!

Tenho a consulta baixo, porém, queria que ela retornasse as Seções (Setor) das respectivas funções. Alguém pode dar uma ajuda ?

SELECT DISTINCT PFUNCAO.CODIGO,PFUNCAO.NOME,
          (SELECT MIN(SALARIO) 
         FROM PFUNC PFUNC1 
         WHERE PFUNC1.CODFUNCAO=PFUNC.CODFUNCAO 
         GROUP BY CODFUNCAO)MENOR,
     (SELECT MAX(SALARIO) FROM PFUNC PFUNC1 
        WHERE PFUNC1.CODFUNCAO=PFUNC.CODFUNCAO 
        GROUP BY CODFUNCAO)MAIOR,
     ISNULL((SELECT COUNT(*)FROM PFUNC PFUNC1 WHERE
         PFUNC1.CODFUNCAO=PFUNC.CODFUNCAO AND
         CODSITUACAO='A' AND CODCOLIGADA=1
         GROUP BY CODSITUACAO),0.00)A,
     ISNULL((SELECT COUNT(*)FROM PFUNC PFUNC1 WHERE
         PFUNC1.CODFUNCAO=PFUNC.CODFUNCAO AND
         CODSITUACAO='P' AND CODCOLIGADA=1
         GROUP BY CODSITUACAO),0.00)P,
     ISNULL((SELECT COUNT(*)FROM PFUNC PFUNC1 WHERE
         PFUNC1.CODFUNCAO=PFUNC.CODFUNCAO AND
         CODSITUACAO='T' AND CODCOLIGADA=1
         GROUP BY CODSITUACAO),0.00)T,
     ISNULL((SELECT COUNT(*)FROM PFUNC PFUNC1 WHERE
         PFUNC1.CODFUNCAO=PFUNC.CODFUNCAO AND
         CODSITUACAO='M' AND CODCOLIGADA=1
         GROUP BY CODSITUACAO),0.00)M,
     ISNULL((SELECT COUNT(*)FROM PFUNC PFUNC1 WHERE
         PFUNC1.CODFUNCAO=PFUNC.CODFUNCAO AND
         CODSITUACAO='E' AND CODCOLIGADA=1
         GROUP BY CODSITUACAO),0.00)E,
     ISNULL((SELECT COUNT(*)FROM PFUNC PFUNC1 WHERE
         PFUNC1.CODFUNCAO=PFUNC.CODFUNCAO AND
         CODSITUACAO='F' AND CODCOLIGADA=1
         GROUP BY CODSITUACAO),0.00)F,
     ISNULL((SELECT COUNT(*)FROM PFUNC PFUNC1 WHERE
         PFUNC1.CODFUNCAO=PFUNC.CODFUNCAO AND
         CODSITUACAO='V' AND CODCOLIGADA=1
         GROUP BY CODSITUACAO),0.00)V,
     ISNULL((SELECT COUNT(*)FROM PFUNC PFUNC1 WHERE
         PFUNC1.CODFUNCAO=PFUNC.CODFUNCAO AND
         DATEDIFF(DAY,PFUNC1.DATAADMISSAO,GETDATE()) < 365 AND CODCOLIGADA=1 
         GROUP BY CODFUNCAO),0.00)'-1A',
     ISNULL((SELECT COUNT(*)FROM PFUNC PFUNC1 WHERE
         PFUNC1.CODFUNCAO=PFUNC.CODFUNCAO AND
         DATEDIFF(DAY,PFUNC1.DATAADMISSAO,GETDATE()) > 365 AND CODCOLIGADA=1 
         GROUP BY CODFUNCAO),0.00)'+1A'
     
FROM PFUNC,PFUNCAO
WHERE PFUNC.CODCOLIGADA=1 AND 
PFUNC.CODSITUACAO<>'D' AND
PFUNC.CODCOLIGADA=PFUNCAO.CODCOLIGADA AND 
PFUNCAO.CODIGO=PFUNC.CODFUNCAO
GROUP BY CODFUNCAO,CODSITUACAO,PFUNCAO.NOME,PFUNCAO.CODIGO,DATAADMISSAO

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  22
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  76
  • Conteúdo/Dia:  0.01
  • Reputação:   1
  • Pontos/Conquistas:  602
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  52

Por favor, alguém?

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  59
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  817
  • Conteúdo/Dia:  0.16
  • Reputação:   105
  • Pontos/Conquistas:  4.774
  • Conteúdo Resolvido:  0
  • Dias Ganho:  74
  • Status:  Offline
  • Idade:  61
  • Dispositivo:  Windows

Bom dia.

Com este select, usando o cubo, faço diversos levantamentos, inclusive o total da função por seção em uma determinada data:

SELECT PFUNC.CODCOLIGADA,
       GCOLIGADA.NOME                                AS COLIGADA,
       GCOLIGADA.CGC,
       PFUNC.CHAPA,
       PFUNC.NOME                                    AS FUNCIONARIO,
       PSECAO.DESCRICAO                              AS SECAO,
       PPESSOA.SEXO,
       PFUNCAO.NOME                                  AS FUNCAO,
       PFUNCAO.CARGO,
       PFUNC.CODSITUACAO,
       PFUNC.SALARIO,
       PFUNC.SALARIO                                 AS SM,
       CASE
         WHEN PFUNC.SALARIO <= 800 THEN '1- Até 800,00'
         WHEN PFUNC.SALARIO > 800
              AND PFUNC.SALARIO <= 1500 THEN '2- 801,00 a 1.500,00'
         WHEN PFUNC.SALARIO > 1500
              AND PFUNC.SALARIO <= 3000 THEN '3- 1.500,00 a 3.000,00'
         WHEN PFUNC.SALARIO > 3000
              AND PFUNC.SALARIO <= 5000 THEN '4- 3.000,00 a 5.000,00'
         WHEN PFUNC.SALARIO > 5000
              AND PFUNC.SALARIO <= 10000 THEN '5- 5.000,00 a 10.000,00'
         ELSE '6- > 10.000,00'
       END                                           AS [FAIXA SALARIAL],
       CASE
         WHEN DATEDIFF(YYYY, PFUNC.DataAdmissao, GETDATE()) < 1 THEN '1- Menos 1 ano'
         WHEN DATEDIFF(YYYY, PFUNC.DataAdmissao, GETDATE()) >= 1
              AND DATEDIFF(YYYY, PFUNC.DataAdmissao, GETDATE()) < 2 THEN '2- 1 a 2 anos'
         WHEN DATEDIFF(YYYY, PFUNC.DataAdmissao, GETDATE()) >= 2
              AND DATEDIFF(YYYY, PFUNC.DataAdmissao, GETDATE()) < 5 THEN '3- 2 a 5 anos'
         WHEN DATEDIFF(YYYY, PFUNC.DataAdmissao, GETDATE()) >= 5
              AND DATEDIFF(YYYY, PFUNC.DataAdmissao, GETDATE()) < 10 THEN '4- 5 a 10 anos'
         WHEN DATEDIFF(YYYY, PFUNC.DataAdmissao, GETDATE()) >= 10
              AND DATEDIFF(YYYY, PFUNC.DataAdmissao, GETDATE()) < 15 THEN '5- 10 a 15 anos'
         WHEN DATEDIFF(YYYY, PFUNC.DataAdmissao, GETDATE()) >= 15
              AND DATEDIFF(YYYY, PFUNC.DataAdmissao, GETDATE()) < 20 THEN '6- 15 a 20 anos'
         ELSE '7- Mais 20 anos'
       END                                           AS [TEMPO DE CASA],
       DATEDIFF(YYYY, PFUNC.DataAdmissao, GETDATE()) AS TEMPO,
       CASE
         WHEN DATEDIFF(YYYY, PPESSOA.DTNASCIMENTO, GETDATE()) <= 25 THEN '1- 25 anos ou menos'
         WHEN DATEDIFF(YYYY, PPESSOA.DTNASCIMENTO, GETDATE()) > 25
              AND DATEDIFF(YYYY, PPESSOA.DTNASCIMENTO, GETDATE()) <= 34 THEN '2- 26 a 34 anos'
         WHEN DATEDIFF(YYYY, PPESSOA.DTNASCIMENTO, GETDATE()) > 34
              AND DATEDIFF(YYYY, PPESSOA.DTNASCIMENTO, GETDATE()) <= 44 THEN '3- 35 a 44 anos'
         WHEN DATEDIFF(YYYY, PPESSOA.DTNASCIMENTO, GETDATE()) > 45
              AND DATEDIFF(YYYY, PPESSOA.DTNASCIMENTO, GETDATE()) <= 54 THEN '4- 45 a 54 anos'
         ELSE '5- Mais de 55 anos'
       END                                           AS IDADE,
       ( CASE PPESSOA.GRAUINSTRUCAO
           WHEN '1' THEN '01- Analfabeto'
           WHEN '2' THEN '02- Até 5o. ano ensino fundamental'
           WHEN '3' THEN '03- 5o. ano completo ensino fundamental'
           WHEN '4' THEN '04- 6o. ao 9o. ano ensino fundamental'
           WHEN '5' THEN '05- Ensino fundamentalcompleto'
           WHEN '6' THEN '06- Ensino médio incompleto'
           WHEN '7' THEN '07- Ensino médio completo'
           WHEN '8' THEN '08- Ensino superior incompleto'
           WHEN '9' THEN '09- Ensino superior completo'
           WHEN 'A' THEN '10- Pós-graduação incompleto'
           WHEN 'B' THEN '11- Pós-graduação completo'
           WHEN 'C' THEN '12- Mestrado incompleto'
           WHEN 'D' THEN '13- Mestrado completo'
           WHEN 'E' THEN '14- Doutorado incompleto'
           WHEN 'F' THEN '15- Doutorado completo'
           WHEN 'G' THEN '16- Pós-doutorado incompleto'
           WHEN 'H' THEN '17- Pós-doutorado completo'
         END )                                       AS [GRAU INSTRUÇÃO],
       PFUNC.CODTIPO,
       PFUNC.DataAdmissao,
       1                                             AS QUANT
FROM   PFUNC(NOLOCK),
       PPESSOA (NOLOCK),
       PSECAO(NOLOCK),
       GCOLIGADA(NOLOCK),
       PFUNCAO(NOLOCK)
WHERE  ( PFUNC.CODPESSOA = PPESSOA.CODIGO
         AND PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADA
         AND PFUNC.CODSECAO = PSECAO.CODIGO
         AND PFUNC.CODCOLIGADA = PFUNCAO.CODCOLIGADA
         AND PFUNC.CODFUNCAO = PFUNCAO.CODIGO
         AND PFUNC.CODCOLIGADA = GCOLIGADA.CODCOLIGADA
         AND PFUNCAO.CODCOLIGADA = GCOLIGADA.CODCOLIGADA
         AND PSECAO.CODCOLIGADA = GCOLIGADA.CODCOLIGADA )
       AND PFUNC.CODSITUACAO NOT IN ( 'I', 'U' )
       AND ( PFUNC.CODCOLIGADA = GCOLIGADA.CODCOLIGADA
             AND PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADA
             AND PFUNC.CODSECAO = PSECAO.CODIGO )
       AND ( ( PFUNC.CODSITUACAO <> 'D'
               AND PFUNC.DATAADMISSAO <= :DATA )
              OR ( PFUNC.CODSITUACAO = 'D'
                   AND PFUNC.DATAADMISSAO <= :DATA
                   AND PFUNC.DATADEMISSAO >= :DATA ) )
GROUP  BY PFUNC.DATAADMISSAO,
          PFUNC.CHAPA,
          PFUNCAO.NOME,
          PFUNCAO.CARGO,
          PFUNC.SALARIO,
          PPESSOA.SEXO,
          PPESSOA.DTNASCIMENTO,
          PPESSOA.GRAUINSTRUCAO,
          PFUNC.CODSITUACAO,
          PFUNC.CODTIPO,
          PFUNC.NOME,
          PSECAO.DESCRICAO,
          PFUNC.CODCOLIGADA,
          GCOLIGADA.NOME,
          GCOLIGADA.CGC 
 

Editado por omar
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  59
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  817
  • Conteúdo/Dia:  0.16
  • Reputação:   105
  • Pontos/Conquistas:  4.774
  • Conteúdo Resolvido:  0
  • Dias Ganho:  74
  • Status:  Offline
  • Idade:  61
  • Dispositivo:  Windows

Link para comentar
Compartilhar em outros sites

Participe da conversa

Você pode postar agora, e se registrar mais tarde. Se você tiver uma conta, faça o login agora para postar com sua conta.

Visitante
Responder esse tópico

×   Você colou conteúdo com formatação.   Remover formatação

  Only 75 emoji are allowed.

×   Seu link foi automaticamente inserido no corpo do post.   Exibir como um link

×   Seu conteúdo anterior foi restaurado.   Limpar conteúdo do editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Criar Novo...

Informação Importante

Usando este site, você concorda com nossos Termos de Uso e nossa Política de Privacidade.