0
//This is my query
SELECT bline_id, ROUND(Avg(flow),3) avg  
FROM   (SELECT id, bline_id, flow, date, CASE 
             WHEN @previous IS NULL 
               OR @previous = bline_id THEN @rownum := @rownum + 1 
             ELSE @rownum := 1 
           end rn, 
           @previous := bline_id 
    FROM   blf, 
           (SELECT @rownum := 0, 
                   @previous := NULL) t 
    WHERE bline_id > 0 and bline_id < 31
    ORDER  BY bline_id, 
              date DESC, 
              id) t 
  WHERE  rn < 11
  GROUP  BY bline_id

このクエリは、最後の 10 レコードの平均を取ります。これらの結果をデータベースに保存し、新しいレコードが追加されたときに次の 10 のグループと比較できるようにしたいと考えています。

私が探している最終結果は、平均値に + または - 2% の変化があるかどうかを判断できるようにすることです。これは理にかなっていますか?

4

1 に答える 1

0

次のフィールドを持つテーブルを作成できます。

id、bline_id、avg、タイムスタンプ

レコードを追加するたびに、上記のクエリの結果をこのテーブルに挿入します。

次に、このテーブルの最新のレコードを前のレコードと比較できます。

于 2013-03-28T15:19:40.913 に答える