2016-09-06 10 views
0

この質問が以前に聞かれた場合は謝罪します。私は検索をしようとしましたが、他のユーザーと同じ言い回しを使用していない可能性があります。前の行のMYSQLの平均値

私はちょうど6000以上の行のテーブルを持っており、特定の列の以前のn個の行の平均を実行しようとしています。この場合、FOREX通貨ペアの終値。 (私はPHP ::トレーダーを使用することができます知っているが、私は私のサーバーにインストールするにはアクセスできません。)

私が試した:

SELECT *, (SELECT AVG(close) 
    FROM `2015_EURUSD_60min` 
    WHERE (id > (id - 20) AND id <= id) 
) 
FROM `2015_EURUSD_60min` 

これは、すべての行に対して同じ番号を生成しましたなぜ私は分からない。 id列の各値は順次です。私はそれを確認するためにデータを整理しました。

SELECTの声明で何が間違っていましたか?

+0

おかげでゴースト。今後の質問にはそれを覚えています。 –

+0

idは常に> id-20、id <= id – Drew

+0

です。言い換えれば、テーブル全体の平均クローズを行います。 – Drew

答えて

0

私は私の質問に(パフォーマンスの低下が)答えを見つけたと思う:書式設定をクリーンアップするため

SELECT *, @s:[email protected]+1 serial_num, 
    (SELECT AVG(close) 
    FROM `2015_EURUSD_60min` 
    WHERE (id > (@s-20) AND id <= @s)) prior_id 
FROM `2015_EURUSD_60min`, (SELECT @s:=0) AS s 
+0

実行に17.0824秒かかりました:(恐ろしいことではありませんが、phpMyAdminのほとんどの時間はテキストを画面に表示するためにレンダリングしていました。 –