Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie berechnet man die Summe einer Spalte in einer SQL-Tabelle für ein bestimmtes Datum und korrigiert fehlende Werte mit denen des nächsten Datums?

Es ist nicht schön, da es vier Kopien Ihrer Tabelle mit sich selbst verbinden muss, was alle möglichen Leistungsprobleme verursachen könnte (ich stark raten Ihnen, Indizes auf id zu haben und date )... aber das wird den Zweck erfüllen:

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

Sehen Sie es auf sqlfiddle .