cfsardinha Postado 18 de Maio de 2018 Tópicos Que Criei: 5 Tópicos/Dia: 0.00 Meu Conteúdo: 7 Conteúdo/Dia: 0.00 Reputação: 0 Pontos/Conquistas: 85 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Idade: 45 Denunciar Compartilhar Postado 18 de Maio de 2018 Bom dia, pessoal. Sou nova aqui no fórum e estou necessitando de uma grande ajuda. Tenho uma sentença SQL (banco Oracle) que calcula o saldo de horas extras de cada funcionário. Nela mostra se o funcionário está com horas positivas ou negativas e ainda converte em valor financeiro. A questão é que agora pediram para fazer esse cálculo por setor e não por funcionário. Ou seja, preciso somar todos os funcionários do setor (seção) e fazer um totalzão das horas positivas e outro das horas negativas do setor. Não sou especialista em SQL e a minha sentença atual é essa abaixo (não fui eu quem fez). Agradeço qualquer ajuda para essa pessoa leiga em SQL. SELECT DISTINCT Y.* , TRUNC((trunc(VALOR_HORA * 1.5,2)) *(TO_NUMBER(SUBSTR(HORAS, 0, INSTR(HORAS, ':')-1)) + TRUNC(TO_NUMBER(SUBSTR(HORAS, INSTR(HORAS, ':')+1, 99)) /60,2)),2) AS SOMA_MAIS_50PORCENTO FROM ( SELECT X.CODCOLIGADA, X.CHAPA, X.NOME, X.NOMEFANTASIA, X.CODSECAO, X.DESCRICAO, X.FUNCAO, ROUND(SALARIO, 2) AS VALOR_HORA, TO_CHAR(TRUNC((HORAS * 60) / 3600), 'FM9900') || ':' || TO_CHAR(TRUNC (MOD((MINUTOS * 60), 3600) / 60), 'FM00') AS HORAS FROM ( SELECT A.CODCOLIGADA, A.CHAPA, B.NOME, C.NOMEFANTASIA, B.CODSECAO, D.DESCRICAO, E.NOME AS FUNCAO, B.SALARIO / B.JORNADAMENSAL * 60 AS SALARIO, B.SALARIO SALARIO_ORIGINAL, B.JORNADAMENSAL, CASE WHEN CAST(((SUM (((EXTRAFAIXA1+EXTRAFAIXA2+EXTRAFAIXA3+EXTRAFAIXA4+EXTRAFAIXA5)+(EXTRADESC1+EX TRADESC2)+(EXTRAFER1+EXTRAFER2)+(EXTRACOMP1+EXTRACOMP2)))- SUM(FALTA+ATRASO))) AS DECIMAL(18,2)) >=0 THEN CAST(((SUM (((EXTRAFAIXA1+EXTRAFAIXA2+EXTRAFAIXA3+EXTRAFAIXA4+EXTRAFAIXA5)+(EXTRADESC1+EX TRADESC2)+(EXTRAFER1+EXTRAFER2)+(EXTRACOMP1+EXTRACOMP2)))- SUM(FALTA+ATRASO))) AS DECIMAL(18,2)) ELSE -CAST(((SUM (((EXTRAFAIXA1+EXTRAFAIXA2+EXTRAFAIXA3+EXTRAFAIXA4+EXTRAFAIXA5)+(EXTRADESC1+EX TRADESC2)+(EXTRAFER1+EXTRAFER2)+(EXTRACOMP1+EXTRACOMP2)))- SUM(FALTA+ATRASO))) AS DECIMAL(18,2)) END AS MINUTOS, CAST(((SUM (((EXTRAFAIXA1+EXTRAFAIXA2+EXTRAFAIXA3+EXTRAFAIXA4+EXTRAFAIXA5)+(EXTRADESC1+EX TRADESC2)+(EXTRAFER1+EXTRAFER2)+(EXTRACOMP1+EXTRACOMP2)))- SUM(FALTA+ATRASO))) AS DECIMAL(18,0)) AS HORAS FROM ABANCOHORFUN A LEFT OUTER JOIN PFUNC B ON A.CODCOLIGADA=B.CODCOLIGADA AND A.CHAPA=B.CHAPA LEFT OUTER JOIN GFILIAL C ON B.CODCOLIGADA=C.CODCOLIGADA AND B.CODFILIAL=C.CODFILIAL LEFT OUTER JOIN PSECAO D ON B.CODCOLIGADA=D.CODCOLIGADA AND B.CODSECAO=D.CODIGO LEFT OUTER JOIN PFUNCAO E ON E.CODCOLIGADA = B.CODCOLIGADA AND E.CODIGO = B.CODFUNCAO WHERE B.CODSITUACAO<>'D' AND A.DATA >= :PLN_C3_D AND A.DATA <= :PLN_C4_D AND A.CODCOLIGADA = :PLN_C2_N GROUP BY A.CODCOLIGADA, A.CHAPA, B.NOME, C.NOMEFANTASIA, B.CODSECAO, D.DESCRICAO, E.NOME, B.SALARIO / B.JORNADAMENSAL, B.SALARIO, B.JORNADAMENSAL ) X ) Y ORDER BY 5,10 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.