Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) contas funcionários por mes


NIK

Pergunta

Ola Pessoal

Gostaria de fazer o seguinte...

Tenho uma tabela com funcionários e gostaria de saber qual a quantidade mensal nesse ano, conforme abaixo

mes-------jan---------fev--------mar-----------abr ...

total-------120--------127--------115----------121 ...

Todas as informações que preciso está nessa tabela de funcionários, data de admissão, data de demissão (caso tenha),

porém, não estou sabendo fazer a sentença.

Se alguém puder me ajudar...

Obrigado

NIK

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Boa tarde NIK,

Segue um exemplo de como pode fazer o script. Espero que ajude... :.)

OBS.: Caso queira alterar os meses de 1, 2, 3, etc, para jan, fev, mar, etc, poderá utilizar um CASE.

CREATE TABLE #Dados (DATA DATETIME, CodFunc int)

insert INTO #Dados VALUES ('2010-01-01', 1)
insert INTO #Dados VALUES ('2010-02-01', 2)
insert INTO #Dados VALUES ('2010-01-01', 3)
insert INTO #Dados VALUES ('2010-03-01', 4)
insert INTO #Dados VALUES ('2010-03-01', 5)

SELECT count(CodFunc) QtdaFunc, DATEPART(MONTH, data) Mes FROM #Dados GROUP BY (DATEPART(MONTH, data))

Link para o comentário
Compartilhar em outros sites

  • 0

Fulvio... beleza

Nesse caso não dá certo pelo seguinte detalhe

na minha tabela tem gente que está registrado antes de 2010.

Veja esse exemplo abaixo

funcionario......data admissao........datademissao

João...............01/05/2007.................vazio........

Pedro.............27/03/2009.................vazio........

Maria..............05/09/2008..............01/04/2010..

Alberto............04/03/2006.................vazio........

Carlos.............01/01/2010..............05/07/2010..

Sebastião.........03/03/2010.................vazio.......

Veja só nesse ex acima... temos 4 funcionários que até jan/10 estavam empregados (João,Pedro,Maria,Alberto)

+ 1 funcionario contratado em jan/10 (Carlos) somando total de 5 funcionarios em jan/10

Feveiro = 5, marco = 5

Em abr/10 foi demitido um func (Maria) - ficando um total de 4 funcionarios + foi contratado o Sebastião ficando total de 5.

Em maio = 5, junho = 5

Em julho foi demitido um func (Carlos) - ficando um total de 4 funcionarios..

e assim por diante.

Preciso fazer isso acontecer.

Valeu

NIK

Link para o comentário
Compartilhar em outros sites

  • 0

Fulvio... não necessáriamente, como irei trabalhar com o ano em vigência, trago as informações quebradas por mes daquele ano.

Bom dia NIK,

Ok, entendido. Mas aí você terá q ter uma data de referência, igual colocou no exemplo.

Esta data será fornecida pelo usuário?

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia NIK,

Assim fica mais complexo.... rs.

Então a data de referência será o ultimo dia de cada mês do ano corrente.

Postei um exemplo logo abaixo. Uma observação: no mês 3 serão 6 funcionários "ativos" na empresa. O Sebastião foi contratado no mês 3 e não no mês 4, ok?

CREATE TABLE #Dados (Funcionario VARCHAR(20), Data_Admissao DATETIME, Data_Demissao DATETIME)

CREATE TABLE #Total (Mes INT, Total INT)

insert INTO #Dados VALUES ('Joao', '2007-05-01', NULL)
insert INTO #Dados VALUES ('Pedro', '2009-03-27', null)
insert INTO #Dados VALUES ('Maria', '2008-09-05', '2010-04-01')
insert INTO #Dados VALUES ('Alberto', '2006-03-04', null)
insert INTO #Dados VALUES ('Carlos', '2010-01-01', '2010-07-05')
insert INTO #Dados VALUES ('Sebastiao', '2010-03-03', null)

-- Conferência
SELECT * FROM #Dados

-- Loop
DECLARE @Mes INT
DECLARE @Dia INT
SET @Mes = 1

WHILE @Mes <= 12
BEGIN
    IF @Mes = 2
      Set @Dia = 28
    ELSE
      Set @Dia = 30
    INSERT INTO #Total
    SELECT @Mes, (
    SELECT COUNT(Funcionario) FROM #Dados WHERE Data_Demissao is NULL   
    AND Data_Admissao <= ('2010-' + CAST(@Mes AS VARCHAR) +'-'+ CAST(@Dia AS VARCHAR)))
    +    
    (SELECT COUNT(Funcionario) FROM #Dados WHERE Data_Demissao is not NULL
    and Data_Demissao > ('2010-' + CAST(@Mes AS VARCHAR) +'-'+ CAST(@Dia AS VARCHAR)))
    SET @Mes = @Mes + 1 
END

-- Conferência
select * from #Total

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

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

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,7k
×
×
  • Criar Novo...