sql >> Databáze >  >> RDS >> Mysql

Jak vypočítat součet sloupce v tabulce SQL pro dané datum a opravit zmeškané hodnoty těmi z nejbližšího předchozího data?

Není to hezké, protože musí spojit čtyři kopie vašeho stolu k sobě, což by mohlo zasáhnout nejrůznější bolesti při výkonu (silně doporučujeme mít indexy na id a date )... ale tohle bude stačit:

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

Podívejte se na sqlfiddle .



  1. Jak nastavit třídu ovladače jdbc

  2. Objekt 'DF__*' je závislý na sloupci '*' - Změna int na double

  3. Závažná chyba:Volání nedefinované funkce session_register()

  4. Nastavte úlohu cron pro aktualizaci informací o článku v závislosti na hodnotách jeho hlasování