Usamos Mysql y estamos tratando de obtener promedios de los últimos dos días hábiles de un conjunto de datos por horas como este.

  
Date                Price
2016-12-13 00:00    187,68  
2016-12-13 01:00    201
2016-12-13 02:00    211,66  
2016-12-13 03:00    215,84

Así que creamos una tabla llamada (Días laborales) que muestra si el día es un día laborable o feriado como este:

 
Date        Workday
2016-12-13    1
2016-12-14    1
2016-12-15    0 
2016-12-16    0

1 significa día laborable y 0 significa fin de semana o feriado nacional

En el y, tenemos que consultar el precio promedio de los últimos dos días hábiles por separado considerando la tabla de días hábiles

¿Es posible?

Muchas gracias.

0
M.Okumus 13 dic. 2016 a las 16:26

2 respuestas

La mejor respuesta

Si lo entiendo correctamente, la tabla workdays realmente tiene una sola fila para cada fecha. Si es así, puede obtener los dos días hábiles más recientes en una subconsulta y luego usar join para elegir las filas en la primera tabla:

select wd.date, avg(h.Price)
from hourly h join
     (select wd.date
      from workdays wd
      where wd.workday = 1 and wd.date <= curdate() -- you might want <
      order by wd.date desc
      limit 2
     ) wd2
     on date(h.date) = wd.date
group by wd.date;
1
Gordon Linoff 13 dic. 2016 a las 13:36

Probar esto

select W.Date, AVG(Price)
from Prices p
join Workdays W on 
    w.Date = DATE(P.Date) 
    AND Workday=1 
    and W.Date <= curdate()
group by W.Date
order by W.Date desc;
0
MtwStark 14 dic. 2016 a las 10:31