Ir para conteúdo
AVISO AOS MEMBROS:

Fizemos uma atualização em 18/06/2023, e a forma de acesso ao Fórum mudou. Não mais está sendo aceito o login pelo Nome de Exibição cadastrado. Agora, apenas pelo email e pelos integradores de Login do Facebook, Google e Microsoft. O Facebook estava com uma validação pendente e já foi normalizado o acesso, já o Google, ainda estamos verificando o que está ocorrendo que não está funcionando.
Caso precisem de ajuda para o login pelo email acesse o link << Esqueci minha senha de acesso>> ou nos envie um pedido de ajuda pelo email admin@forumrm.com.br

Administração
ForumRM

Calculando positivos e negativos da soma total


Posts Recomendados


  • 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

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

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.