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

移動平均/ローリング平均

    これが SQL Fiddle これは、次のクエリを示しています。

    WITH TempS as 
    (
      SELECT s.SNo, s.value, 
      ROW_NUMBER() OVER (ORDER BY s.SNo) AS RowNumber
      FROM MyTable AS s
    )
    SELECT m.SNo, m.value,
    (
      SELECT SUM(s.value) 
      FROM TempS AS s
      WHERE RowNumber >= m.RowNumber
      AND RowNumber <= m.RowNumber + 2
    ) AS Sum3InRow
    FROM TempS AS m
    

    あなたの質問では、3つの連続した値を合計するように求めていました。合計する必要のある連続レコードの数が変わる可能性があると質問を変更しました。上記のクエリでは、m.RowNumber + 2を変更するだけです。 必要なものに。

    したがって、60が必要な場合は、

    m.RowNumber + 59
    

    ご覧のとおり、1つの番号を変更するだけでよいため、非常に柔軟性があります。



    1. MySQLテーブルの外部キーを一覧表示するパフォーマンスの高い方法は?

    2. 画像を使用して変数をMYSQLデータベーステーブルに保存しようとしています

    3. MariaDBでのTRIM_ORACLE()のしくみ

    4. アマゾンLinuxでのpipインストールmysqlclient