[firebase-br] Erro ao Somar com Select CASE
Eduardo Belo
beloelogica em gmail.com
Seg Out 26 01:57:32 -03 2009
Olá Pessoal!
O que há de errado na Soma do CASE no SELECT abaixo:
SELECT
A.ID_AVALIACAO,
A.ID_SERVIDOR,
A.TRIMESTRE,
A.ID_AVALIADOR,
A.TOTAL AS TOTAL_PONTOS,
/* Aqui a formula do resultado final */
(COALESCE(SUM(CASE A.ID_AVALIADOR WHEN 1 THEN A.TOTAL*2 END),0.0) +
COALESCE(SUM(CASE B.ID_AVALIADOR WHEN 2 THEN B.TOTAL*6 END),0.0))
/ 8 AS RESULTADO_FINAL
FROM AVALIACOES A, AVALIACOES B
WHERE (B.ID_AVALIACAO <= A.ID_AVALIACAO) AND (B.ID_SERVIDOR =
A.ID_SERVIDOR) AND (B.TRIMESTRE >= A.TRIMESTRE)
GROUP BY
A.ID_AVALIACAO,
A.ID_SERVIDOR,
A.TRIMESTRE,
A.ID_AVALIADOR,
A.TOTAL
Exemplo com 10 registros:
ID_AVALIACAO ID_SERVIDOR TRIMESTRE ID_AVALIADOR TOTAL_PONTOS
RESULTADO_FINAL
------------ ----------- --------- ------------ ------------ --------------
1 1 012009 1 280 70,00
2 1 012009 2 210 157,50
3 1 022009 1 150 37,50
4 1 022009 2 70 52,50
5 2 012009 1 185 46,25
6 2 012009 2 225 168,75
7 1 032009 1 202,5 50,62
8 1 032009 2 205 153,75
9 2 022009 1 185 46,25
10 2 022009 2 250 187,50
O resultado que eu quero na coluna RESULTADO_FINAL é:
RESULTADO FINAL
-----------------------------
0,00
227,50
0,00
90,00
0,00
215,00
0,00
204,38
0,00
233,75
Essa base é de um Sistema de avaliação de Desempenho de Funcionários,
onde há avaliação do próprio funcionario e do seu chefe, que está identificado
no ID_AVALIADOR com a opções 1 = funcionário e 2 = chefia. Cada funcionário
só pode ter 2 avaliações por trimestre e a pontuação final tem a
seguinte formula:
(Total Funcionario*2) + (Total Chefia*6) / 8 que já está totalizada
sem a formula
na coluna TOTAL_PONTOS
Exemplo da primeira avaliação(ID_AVALIACAO 1 e 2:
(280*2)+(210*6) / 8 = 227,50
Quando eu faço a soma dos resultados dos dois case's ele me retorna
individualmente,
eu preciso que ele faça como no exemplo acima.
Agradeço antecipadamente a todos que ajudarem.
Mais detalhes sobre a lista de discussão lista