sql >> データベース >  >> RDS >> Mysql

特定の日付のSQLテーブルの列の合計を計算し、欠落した値を最も近い前の日付の値にパッチする方法は?

    テーブルの4つのコピーをそれ自体に結合する必要があるため、見栄えがよくありません。これにより、あらゆる種類のパフォーマンスの問題が発生する可能性があります(強く idにインデックスを付けることをお勧めします およびdate )...しかし、これでうまくいきます:

    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
    

    sqlfiddle でご覧ください 。



    1. SQLServerでSETDATEFIRSTを無視するDATEDIFF()の回避策(T-SQLの例)

    2. SQLにLIKEとINの組み合わせはありますか?

    3. Oracleで先行ゼロを使用して数値をフォーマットする2つの方法

    4. Mysqlトランザクション:コミットとロールバック