Ir para conteúdo
Seja Membro VIP - Remova Banners de Propagandas, Tenha Liberado Qualquer Download, Além de Acessos em Áreas Exclusivas!! ×
Quer acesso a todas as Áreas do Fórum, até aquelas só para membros VIPs? Também quer poder baixar qualquer ARQUIVO? ×

Sql: Ativos por periodo


Monaski

Posts Recomendados


  • Tópicos Que Criei:  36
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  87
  • Conteúdo/Dia:  0.02
  • Reputação:   1
  • Pontos/Conquistas:  798
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline
  • Idade:  43

Salve, bom dia.

Galera fui solicitado a desenvolver um relatorio de rotatividade de colaboradores,

eis que me deparei com uma situação que ainda naõ consegui resolver..

Como vou pegar colaboradores ativo por periodo?

Pensei em usar data de admissão mas isso vai dar errado, pois posso ter um

colaborador ativo no periodo que foi admitido em uma data anterior ao periodo

que estou buscando.

Alguma luz?

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  8
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  48
  • Conteúdo/Dia:  0.01
  • Reputação:   0
  • Pontos/Conquistas:  350
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

boa tarde!

amigo vc pode montar seu relatorio com nome chapa e um campo para vc definir as situação do funcionario, ou seja se ele é demitido ou admitido, vai aqui o nome do campo: pfunc.codsituação dai vc coloca no filtro codigo da situação <> D que seria todos funcionarios diferentes de demitidos.

dai vc pode criar um filtro tmb por data de admissão e chapa tmb

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  27
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  147
  • Conteúdo/Dia:  0.02
  • Reputação:   5
  • Pontos/Conquistas:  1.023
  • Conteúdo Resolvido:  0
  • Dias Ganho:  5
  • Status:  Offline
  • Idade:  46

Vc pode cruzar a PFUNC com a PFHSTSIT para verificar a situação do funcionário no período citado...

[]´s

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  36
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  87
  • Conteúdo/Dia:  0.02
  • Reputação:   1
  • Pontos/Conquistas:  798
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline
  • Idade:  43

Pessoal obrigado pela força ai, mas meu select terá que trazer o total de colaboradores

para trazer demitidos nao tive problemas

select count(1) from pfunc where pfunc.codsituacao = 'D' and pfunc.datademissao beteween '01/01/2011' and '31/12/2011'

Nesse select trará todos demitidos do ano de 2011.

Preciso do total pois vou ter que fazer um calculo sinistro aqui para calcular rotatividade

(((Ativos do periodo + ativos do periodo anterior)/2) + ((Demitidos do periodo + Demitidos do periodo anterior)/2))/2)
Esse calculo maluco no final me dá a rotatividade de colaboradores do periodo.

Att.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  27
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  147
  • Conteúdo/Dia:  0.02
  • Reputação:   5
  • Pontos/Conquistas:  1.023
  • Conteúdo Resolvido:  0
  • Dias Ganho:  5
  • Status:  Offline
  • Idade:  46

Precisei fazer um Cubo de Turn Over e criei uma tabela onde populava com os valores com cálculos parecido com o q vc ta precisando.. ve se ajuda em algo..

select '02/2003',(((

select convert (money,(select count(chapa) from pfunc

where dataadmissao >= '2003-02-01' and dataadmissao < '2003-03-01')))

+

(select convert (money,(select count(chapa) from pfunc

where datademissao >= '2003-02-01' and dataadmissao < '2003-03-01'))))*100 /2 ) /

(select count (chapa) from pfunc where (datademissao >= '2003-03-01' or datademissao is null) and dataadmissao < '2003-03-01')

union all

select '03/2003',(((

select convert (money,(select count(chapa) from pfunc

where dataadmissao >= '2003-03-01' and dataadmissao < '2003-04-01')))

+

(select convert (money,(select count(chapa) from pfunc

where datademissao >= '2003-03-01' and dataadmissao < '2003-04-01'))))*100 /2 ) /

(select count (chapa) from pfunc where (datademissao >= '2003-04-01' or datademissao is null) and dataadmissao < '2003-04-01')

...

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  36
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  87
  • Conteúdo/Dia:  0.02
  • Reputação:   1
  • Pontos/Conquistas:  798
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline
  • Idade:  43

Ronieri, brigadão minha base é Oracle havia me esquecido de comentar, porém seu script vai

me ajudar a elucidar o problema.

Por enquanto muito obrigado.

Link para comentar
Compartilhar em outros sites

  • 1 mês depois...

  • Tópicos Que Criei:  5
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  37
  • Conteúdo/Dia:  0.01
  • Reputação:   3
  • Pontos/Conquistas:  278
  • Conteúdo Resolvido:  0
  • Dias Ganho:  2
  • Status:  Offline

Ronieri, brigadão minha base é Oracle havia me esquecido de comentar, porém seu script vai

me ajudar a elucidar o problema.

Por enquanto muito obrigado.

Em Oracle por função e seção:

DECLARE

V_Registros Int := 0;

DATAINI DATE;

DATAFIM DATE;

ANO VARCHAR(4) := '2011';

TYPE TVETOR IS VARRAY(12) OF VARCHAR2(2); --DEFINE O TIPO DE VETOR

VMES TVETOR; --DECLARA O VETOR;

MES VARCHAR(2);

PROX INTEGER :=0;

--INICIA O VETOR

BEGIN

--LIMPA A TABELA

Select

COUNT(*) INTO V_Registros

from

user_tables

where

table_name like '%T_QUADROPESSOAL%';

/* Condição Para exclusão da Tabela */

IF

V_Registros > 0

THEN

EXECUTE IMMEDIATE 'DELETE FROM T_QUADROPESSOAL';

END IF;

VMES:=TVETOR('01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'); -- VETOR RECEBE O VALOR

--INICIA LEITURA

FOR PROX IN 1 .. 12 LOOP

MES:=VMES(PROX);

DATAINI := ANO||'-'||MES||'-01';

DECLARE CURSOR CQUADRO IS SELECT

S.CODFILIAL,

G.NOMEFANTASIA FILIAL,

S.CODIGO CODSECAO,

S.DESCRICAO SECAO,

C.CODIGO CODFUNCAO,

MES,

ANO,

C.NOME FUNCAO,

COUNT(F.CHAPA) TOTAL

FROM

PSECAO S

INNER JOIN

GFILIAL G

ON

S.CODCOLIGADA=G.CODCOLIGADA AND S.CODFILIAL=G.CODFILIAL

INNER JOIN

(SELECT

HS.CODCOLIGADA,

HS.CHAPA,

HS.CODSECAO,

HS.DTMUDANCA INICIO,

((SELECT MIN(X.DTMUDANCA) FROM PFHSTSEC X WHERE X.CODCOLIGADA=HS.CODCOLIGADA AND X.CHAPA=HS.CHAPA AND X.DTMUDANCA>HS.DTMUDANCA) - 1) FIM

FROM

PFHSTSEC HS) HS

ON

S.CODCOLIGADA=HS.CODCOLIGADA AND S.CODIGO=HS.CODSECAO

INNER JOIN

PFUNCAO C

ON

S.CODCOLIGADA=C.CODCOLIGADA

INNER JOIN

(SELECT

HC.CODCOLIGADA,

HC.CHAPA,

HC.CODFUNCAO,

HC.DTMUDANCA INICIO,

((SELECT MIN(X.DTMUDANCA) FROM PFHSTFCO X WHERE X.CODCOLIGADA=HC.CODCOLIGADA AND X.CHAPA=HC.CHAPA AND X.DTMUDANCA>HC.DTMUDANCA) - 1) FIM

FROM

PFHSTFCO HC) HC

ON

S.CODCOLIGADA=HC.CODCOLIGADA AND C.CODIGO=HC.CODFUNCAO

INNER JOIN

PFUNC F

ON

HS.CODCOLIGADA=F.CODCOLIGADA AND HS.CHAPA=F.CHAPA AND HC.CHAPA=F.CHAPA

WHERE

F.DATAADMISSAO<Last_Day(DATAINI) AND (F.CODSITUACAO<>'D' OR F.DATADEMISSAO>DATAINI)

AND HS.INICIO<=DATAINI AND ( HS.FIM>=DATAINI OR HS.FIM IS NULL)

AND HC.INICIO<=DATAINI AND ( HC.FIM>=DATAINI OR HC.FIM IS NULL)

GROUP BY

S.CODFILIAL,

S.CODIGO,

G.NOMEFANTASIA,

S.DESCRICAO,

C.CODIGO,

C.NOME;

TABQUADRO CQUADRO%ROWTYPE;

BEGIN

OPEN CQUADRO;

LOOP

FETCH CQUADRO INTO TABQUADRO;

exit WHEN CQUADRO%NOTFOUND;

INSERT INTO T_QUADROPESSOAL(CODFILIAL, FILIAL, CODSECAO, SECAO, CODFUNCAO, ANO, MES, FUNCAO, TOTAL) VALUES

(TABQUADRO.CODFILIAL, TABQUADRO.FILIAL, TABQUADRO.CODSECAO, TABQUADRO.SECAO, TABQUADRO.CODFUNCAO, TABQUADRO.ANO, TABQUADRO.MES, TABQUADRO.FUNCAO, TABQUADRO.TOTAL);

END LOOP;

CLOSE CQUADRO;

END LOOP;

END LOOP;

END;

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.