Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como calcular a soma de uma coluna em uma tabela SQL para uma determinada data e corrigir os valores perdidos com os da data anterior mais próxima?


Não é bonito, pois tem que juntar quatro cópias da sua tabela a si mesmo, o que pode prejudicar todo tipo de desempenho (eu fortemente aconselho a ter índices em id e date )... mas isso fará o truque:
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

Veja em sqlfiddle .