sql >> Database >  >> RDS >> Mysql

Hoe de som van een kolom in een SQL-tabel voor een bepaalde datum berekenen en gemiste waarden patchen met die van de dichtstbijzijnde vorige datum?

Het is niet mooi, omdat het vier exemplaren van je tafel aan zichzelf moet toevoegen, wat allerlei prestatiepijn kan veroorzaken (ik sterk adviseren u om indexen op id . te hebben en date )... maar dit zal het lukken:

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

Bekijk het op sqlfiddle .



  1. Recursief in cakephp3?

  2. Gegevens invoegen om op te nemen in sqlite

  3. Grondbeginselen van tabeluitdrukkingen, deel 11 - Aanzichten, overwegingen bij wijzigingen

  4. Op zoek naar hoofdletterongevoelige MySQL-sortering waarbij een !=ä