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                                           

Responder a