Mysql
 sql >> Database >  >> RDS >> Mysql

Come calcolare la somma di una colonna in una tabella SQL per una data data e correggere i valori mancati con quelli della data precedente più vicina?

Non è carino, in quanto deve unire quattro copie del tuo tavolo su se stesso, il che potrebbe colpire tutti i tipi di problemi di prestazioni (io fortemente ti consiglio di avere indici su id e date )... ma questo farà il trucco:

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

Guardalo su sqlfiddle .