
Ayuda a optimizar mi Query
Publicado por MARKO (11 intervenciones) el 04/07/2013 01:14:08
Saludos Web del programador
Tengo en la tabla cargahoraria los campos Idgen, fecha, hora, generado y cada registro se refiere a una medición realizada cada hora excepto la hora 12 que sera dividida en dos 11:30 y 12 así
la cuestión es esta para hacer un monitoreo de la table diremos que la generación de la hora 12 de un día será el promedio entre las generaciones de las 11.30 y 12 así que escribí el siguiente query para saber la generación de todas las horas de UN SOLO día
el query anterior funciona de maravilla y devuelve el siguiente resultado
Mi problema reside en que necesito modificar el query para poder hacer el monitoreo en un RANGO DE VARIOS DÍAS no solo un día
agradezco por adelantado su ayuda
Tengo en la tabla cargahoraria los campos Idgen, fecha, hora, generado y cada registro se refiere a una medición realizada cada hora excepto la hora 12 que sera dividida en dos 11:30 y 12 así
1
2
3
4
5
6
7
8
9
10
11
12
13
Idgen fecha hora generado
2 01/01/2007 6.00 41.00
2 01/01/2007 7.00 30.00
2 01/01/2007 8.00 31.00
2 01/01/2007 9.00 51.00
2 01/01/2007 10.00 48.00
2 01/01/2007 11.00 75.00
2 01/01/2007 11.30 94.00 <---
2 01/01/2007 12.00 95.00 <---
2 01/01/2007 13.00 93.00
2 01/01/2007 14.00 75.00
2 01/01/2007 15.00 70.00
2 01/01/2007 16.00 40.00
la cuestión es esta para hacer un monitoreo de la table diremos que la generación de la hora 12 de un día será el promedio entre las generaciones de las 11.30 y 12 así que escribí el siguiente query para saber la generación de todas las horas de UN SOLO día
1
2
3
4
5
6
7
8
9
declare @fecha varchar(10);
declare @unidad varchar(3);
set @fecha = '2007-01-01';
set @unidad = '2';
SELECT idgen, fecha, hora, Generado from Cargahoraria where fecha = @fecha and Idgen = @unidad and hora between '1.00' and '11.00'
UNION
SELECT idgen, fecha, 12 as hora, avg(Generado) from Cargahoraria where fecha = @fecha and Idgen = @unidad and hora between '11.30' and '12.00'
UNION
SELECT idgen, fecha, hora, Generado from Cargahoraria where fecha = @fecha and Idgen = @unidad and hora between '13.00' and '16.00'
el query anterior funciona de maravilla y devuelve el siguiente resultado
1
2
3
4
5
6
7
8
9
10
11
12
Idgen fecha hora generado
2 01/01/2007 6.00 41.00
2 01/01/2007 7.00 30.00
2 01/01/2007 8.00 31.00
2 01/01/2007 9.00 51.00
2 01/01/2007 10.00 48.00
2 01/01/2007 11.00 75.00
2 01/01/2007 12.00 94.50 <---
2 01/01/2007 13.00 93.00
2 01/01/2007 14.00 75.00
2 01/01/2007 15.00 70.00
2 01/01/2007 16.00 40.00
Mi problema reside en que necesito modificar el query para poder hacer el monitoreo en un RANGO DE VARIOS DÍAS no solo un día
agradezco por adelantado su ayuda
Valora esta pregunta


0