Estoy calculando valores de razonez usando SQL y tengo el problema de las
divisiones por zero y tener que volver a calcular el denominador. Me explico,
ejemploSELECT ID,f_idagente ( SELECT count(s.f_id) AS xsell2
FROM dcg.t_sys_disposicion d,
dcg.t_sys_calls s WHERE s.f_disposicion
= d.f_id AND s.f_horastart::date >= $1 and
s.f_horastart::date<=$2 and d.f_id IN(32,33,35,36,40,42,43,44)
and s.f_agente=f_idagente ) / (
SELECT count(s.f_id) AS coreoffert FROM
dcg.t_sys_disposicion d, dcg.t_sys_calls s WHERE
s.f_disposicion = d.f_id AND s.f_horastart::date
>= $1 and s.f_horastart::date<=$2 and d.f_id
IN(30,31,32,33,38,41,42,43) and s.f_agente=f_idagente
) FROM TABLA;
En este select si quisiera evaluar antes de calcular si el denominador =0
tendria que volver hacerlo y usar una clausula CASE ...WHEN para comprobar. Mi
pregunta es no existe otra forma mas simple de poder hacer la validacion sin
tener que volver a repetir todo el select y tener que poner el CASE ...WHEN
porque me complica demasiado el codigo ?
La otra forma que pense es de calcular en funciones cada razon que estoy
calculando y en la funcion hacer todo solo retornar 0 o el valor calculado pero
no me gusta mucho la idea porque deberia hacer 10 funciones que son las razones
que calculo, imaginense, por otro lado, 10 razones como estas ademas de la
validacion de si el denominador es 0 seria kilometrico el SELECT en cuestion,
existe algun truco para esto y yo no me lo se ?
Si uso funciones el plan de ejecucion no se ve afectado ?
Gracias