Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để tính toán tổng của một cột trong bảng SQL cho một ngày nhất định và vá các giá trị bị thiếu với các giá trị của ngày trước đó gần nhất?

Nó không đẹp, vì nó phải ghép bốn bản sao của bảng của bạn với chính nó, điều này có thể gây ra tất cả các loại đau đớn về hiệu suất (Tôi mạnh mẽ khuyên bạn nên có các chỉ mục trên iddate ) ... nhưng điều này sẽ thực hiện thủ thuật:

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

Xem nó trên 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. Số nguyên so với char cho thuộc tính bản ghi DB

  2. MySQL - Câu lệnh CASE so với IF so với hàm IF

  3. DATEDIFF () hoặc BETWEEN cho Phạm vi ngày trong Truy vấn SQL

  4. Nhận tất cả người dùng ngoại trừ quản trị viên trong mối quan hệ nhiều người

  5. cách sắp xếp cột varchar chứa các giá trị số với lambdas linq thành Thực thể