Boa tarde!
Estou calculando a produtividade dos técnicos que trabalham na empresa e funciona da seguinte forma:
Cada tipo de atividade tem seu peso;
O dia trabalhado é contado através do campo FimVisita;
O sábado tem peso 0.5 e o restante 1;
Porém não consigo adicionar a soma dos dias distintos trabalhados à consulta.
SELECT
tu.IDUsuario,
tu.NomeUsuario AS TECNICO,
SUM(
CASE
WHEN tta.TipoServico IN ('INSTALACAO', 'MIGRACAO', 'ALTERACAO_ENDERECO') THEN 1.0
WHEN tta.TipoServico = 'SUPORTE' THEN 0.67
WHEN tta.TipoServico IN ('SOLICITACAO_SERVICO', 'UPGRADE_DOWNGRADE') THEN 0.80
WHEN tta.TipoServico = 'RETIRADA' AND tfa.Descricao IN ('EQUIPAMENTO DEVOLVIDO C/ FONTE', 'EQUIPAMENTO DEVOLVIDO S/ FONTE') THEN 0.25
WHEN tta.TipoServico = 'SOLICITACAO_SERVICO' AND tta.Descricao = 'RECOLHIMENTO FPD' THEN 0.25
ELSE 0
END
) AS PONTUACAO,
sub.SomaDiasDistintos
FROM
master_adapter_comercial.TB_Atendimento ta
LEFT JOIN master_adapter_comercial.TB_Contrato tc ON tc.IDContrato = ta.IDContrato
LEFT JOIN master_adapter.TB_Usuario tu ON tu.IDUsuario = ta.IDTecnicoVisita
LEFT JOIN master_adapter_comercial.TB_TipoAtendimento tta ON tta.IDTipoAtendimento = ta.IDTipoAtendimento
LEFT JOIN master_adapter_comercial.TB_FechamentoAtendimento tfa ON tfa.IDFechamentoAtendimento = ta.IDFechamentoAtendimento
LEFT JOIN (
SELECT
DISTINCT ta2.IDTecnicoVisita,
tu2.NomeUsuario,
CAST(ta2.DataFimVisita as date) as DataFimVisita,
SUM(CASE WHEN DAYOFWEEK(ta2.DataFimVisita) = 7 THEN 0.5 ELSE 1 END) AS SomaDiasDistintos
FROM
master_adapter_comercial.TB_Atendimento ta2
LEFT JOIN master_adapter.TB_Usuario tu2 ON tu2.IDUsuario = ta2.IDTecnicoVisita
WHERE
ta2.DataFimVisita >= DATE_FORMAT(CURDATE()-1, '%Y%m01')
AND ta2.Status IN ('SOLUCIONADO', 'POS_ATENDIMENTO')
GROUP BY
ta2.IDTecnicoVisita
) AS sub ON sub.IDTecnicoVisita = ta.IDTecnicoVisita
WHERE
ta.DataFimVisita >= DATE_FORMAT(CURDATE() - 1, '%Y%m01')
AND tu.NomeUsuario IS NOT NULL
AND tta.TipoServico <> 'INTERNO'
GROUP BY
sub.NomeUsuario
ORDER BY
tu.NomeUsuario;