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