sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo calcular la suma de una columna en una tabla SQL para una fecha determinada y parchear los valores perdidos con los de la fecha anterior más cercana?

No es bonito, ya que tiene que unir cuatro copias de su tabla a sí mismo, lo que podría afectar todo tipo de problemas de rendimiento (yo fuertemente le aconsejo que tenga índices en id y date )... pero esto hará el truco:

SELECT   y.report_date, SUM(x.value)
FROM     mytable AS x
  NATURAL JOIN (
    SELECT   a.id, b.date AS report_date, MAX(c.date) AS date
    FROM     (SELECT DISTINCT id   FROM mytable) a JOIN
             (SELECT DISTINCT date FROM mytable) b JOIN
             mytable AS c ON (c.id = a.id AND c.date <= b.date)
    GROUP BY a.id, b.date
 ) AS y
GROUP BY y.report_date

Véalo en sqlfiddle .