Buenas Coleguas:
Estoy realizando unos procesos que procesan muchos datos con algunas formulas simples, el tema es que uno de los resultados utiliza otro de los resultados y estoy dando al DBMS doble trabajo en que calcule ambas veces lo mismo. Osea, dentro del mismo bloque SELECT tengo PromedioTT y Requeridas, donde cuando tengo que calcular requeridas uso el resultado de PromedioTT, pero como no se como tomar el resulrado de la columna anteriormente calculada la calculo nuevamente .
Este es el cod :
Código:
Select
ROUND(
(
case SUM(ai.callsanswered)
when 0 then 0
else ( cast (SUM(ai.talktime) as float /*(10,6 )*/)
/
cast ( SUM(ai.callsanswered) as float /*(10,6 )*/)
)
end
) +
(
case max(ll.atendidas)
when 0 then 0
else ( cast (min(ll.no_listo)as float /*(10,6)*/)
/
cast (max(ll.atendidas)as float /*(10,6)*/)
)
end
)
, 0) AS avgtalktime,
/* requeridas = */
ROUND(
(
cast ( SUM(ai.callsanswered)as float (10,5))
*
(
case SUM(ai.callsanswered)
when 0 then 0
else ( cast (SUM(ai.talktime) as float /*(10,6 )*/)
/
cast ( SUM(ai.callsanswered) as float /*(10,6 )*/)
)
end
+
case max(ll.atendidas)
when 0 then 0
else ( cast (min(ll.no_listo)as float /*(10,6)*/)
/
cast (max(ll.atendidas)as float /*(10,6)*/)
)
end
)
)
/
cast( avg(g.objetivo_conversacion) as decimal (10,5)
)
,0) AS required ........//sigue la consulta
La pregunta es entonces, saben como puedo hacerlo de modo mas eficiente usando avgtalktime????