Llevo poco trabajando con oracle y no tengo mucha idea. Estoy tratando de optimizar una consulta. Espero que me podáis ayudar. La idea es la siguiente: en la tabla campaigns tengo los campos id_c, id_user, anio, mes, altas.
Tengo que sumar las altas de un determinado mes, para un usuario concreto y en tantas campañas como participe.
En dicha tabla hay registros para el user con id=0 que se toman como registros por defecto. Es decir, si busco el id_user=100 para el mes=10 y anio=2012 y existe, cojo el valor del campo alta correspondiente, pero si no existe, cojo el registro de ese mes y año para el id_user=0.
La consulta es esta:
Código SQL:
Ver original
SELECT SUM(ALTAS) FROM CAMPAIGNS c WHERE id_user = (SELECT MAX(id_user) FROM CAMPAIGNS WHERE id_user IN (100, 0) AND ano = c.ano AND mes = c.mes) AND c.ano = 2012 AND c.mes = 10;
Esto me funciona, pero creo que se podría optimizar. ¿Se os ocurre cómo?
Gracias por adelantado