Monaski Postado 19 de Janeiro de 2012 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 Denunciar Compartilhar Postado 19 de Janeiro de 2012 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? Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
clecioassuncao Postado 19 de Janeiro de 2012 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 Denunciar Compartilhar Postado 19 de Janeiro de 2012 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 Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Ronieri Postado 19 de Janeiro de 2012 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 Denunciar Compartilhar Postado 19 de Janeiro de 2012 Vc pode cruzar a PFUNC com a PFHSTSIT para verificar a situação do funcionário no período citado... []´s Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Monaski Postado 19 de Janeiro de 2012 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 Autor Denunciar Compartilhar Postado 19 de Janeiro de 2012 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. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Ronieri Postado 19 de Janeiro de 2012 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 Denunciar Compartilhar Postado 19 de Janeiro de 2012 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') ... Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Monaski Postado 19 de Janeiro de 2012 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 Autor Denunciar Compartilhar Postado 19 de Janeiro de 2012 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. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Dani Postado 27 de Fevereiro de 2012 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 Denunciar Compartilhar Postado 27 de Fevereiro de 2012 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; Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Posts Recomendados
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.