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

等間隔の複数の平均

    便利な関数 width_bucket()<をお勧めします。 / code>

    各時間セグメント(「ビン」)の平均を取得するには:

    SELECT width_bucket(extract(epoch FROM t.the_date)
                      , x.min_epoch, x.max_epoch, x.bins) AS bin
         , avg(value) AS bin_avg
    FROM   tbl t
        , (SELECT extract(epoch FROM min(the_date)) AS min_epoch
                , extract(epoch FROM max(the_date)) AS max_epoch
                , 10 AS bins
           FROM   tbl t
          ) x
    GROUP  BY 1;
    

    (段階的な)成長時間間隔での「移動平均」を取得するには:

    SELECT bin, round(sum(bin_sum) OVER w /sum(bin_ct) OVER w, 2) AS running_avg
    FROM  (
       SELECT width_bucket(extract(epoch FROM t.the_date)
                         , x.min_epoch, x.max_epoch, x.bins) AS bin
            , sum(value) AS bin_sum
            , count(*)   AS bin_ct
       FROM   tbl t
           , (SELECT extract(epoch FROM min(the_date)) AS min_epoch
                   , extract(epoch FROM max(the_date)) AS max_epoch
                   , 10 AS bins
              FROM   tbl t
             ) x
       GROUP  BY 1
       ) sub
    WINDOW w AS (ORDER BY bin)
    ORDER  BY 1;
    

    the_dateの使用 dateの代わりに 列名として、予約語 を避けます。 識別子として。
    width_bucket()以降 現在、倍精度に対してのみ実装されています および数値 the_dateからエポック値を抽出します 。詳細はこちら:
    PostgreSQLでの(x、y)座標点群の集約



    1. SQL-MySQLデータ(タイムスタンプとステータスメッセージを含む行のセット)からすべてのダウンタイムとダウンタイムの長さを検索します

    2. ループ中のPHPget_resultが機能しない

    3. 最後のxブログエントリ-ただし、ユーザーごとに1回のみ

    4. MySQLコネクタ/C++でどの実行関数を使用する必要がありますか?