Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment calculer la somme d'une colonne dans une table SQL pour une date donnée et patcher les valeurs manquées avec celles de la date précédente la plus proche ?

Ce n'est pas joli, car il doit joindre quatre copies de votre table à lui-même, ce qui pourrait entraîner toutes sortes de problèmes de performances (je fortement vous conseillons d'avoir des index sur id et date )... mais ceci fera l'affaire :

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

Voir sur sqlfiddle .