sql >> Databasteknik >  >> RDS >> Mysql

Hur beräknar man summan av en kolumn i en SQL-tabell för ett givet datum och korrigerar missade värden med de från närmast föregående datum?

Det är inte snyggt, eftersom det måste sammanfoga fyra kopior av ditt bord till sig själv, vilket kan drabba alla typer av prestationssmärta (jag starkt råder dig att ha index på id och date )... men det här gör susen:

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

Se den på sqlfiddle .



  1. Skillnad mellan kodning och sortering?

  2. i postgres, kan du ställa in standardformateringen för en tidsstämpel, efter session eller globalt?

  3. Slash eller ingen Slash?

  4. mysql COUNT() antal rader för långsamt