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

SQLスライディングウィンドウ-間隔全体で最大値を見つける

    SELECT  *,
            (
            SELECT  SUM(value)
            FROM    mytable mi
            WHERE   mi.tstamp BETWEEN m.tstamp - '5 minute'::INTERVAL AND m.tstamp
            ) AS maxvalue
    FROM    mytable m
    ORDER BY
            maxvalue DESC
    LIMIT   1
    

    PostgreSQL 11以降の場合:

    SELECT  SUM(value) OVER (ORDER BY tstamp RANGE '5 minute' PRECEDING) AS maxvalue,
            *
    FROM    mytable m
    ORDER BY
            maxvalue DESC
    LIMIT   1
    



    1. 重複を選択し、最も古いものを保持します(IDに基づかない)

    2. mysqlストアドプロシージャのネストされたループ

    3. 警告:PDOStatement ::execute():SQLSTATE [HY093]:無効なパラメーター番号:パラメーターが...filetextで定義されていません

    4. データベースから各グループの最後のレコードを取得する - SQL Server 2005/2008