Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak obliczyć sumę kolumny w tabeli SQL dla danej daty i zamienić brakujące wartości na te z najbliższej poprzedniej daty?

To nie jest ładne, ponieważ musi łączyć ze sobą cztery kopie twojego stołu, co może uderzyć w różnego rodzaju problemy z wydajnością (silnie radzimy mieć indeksy na id i date )... ale to załatwi sprawę:

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

Zobacz go na sqlfiddle .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy SQL może znaleźć rekordy z duplikatami?

  2. io.vertx.mysqlclient.MySQLPool.query ().execute nigdy nie jest tak naprawdę wykonywany i nic nie zwraca

  3. Django - Jak połączyć się ze starszą bazą danych przez pośrednika?

  4. Jak testować w każdym z kilku stołów i pomiędzy nimi?

  5. Usuń zduplikowane wiersze z tabeli za pomocą opcji join