Hola a todos.
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 originalSELECT 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