列を持つテーブルがありMeasures
ます: timestamp
(Unix タイムスタンプ), tag
, value
. たとえば、15 日間の単一の移動平均を取得するには、次のようにします。
SELECT tag,avg(value)
FROM measures
WHERE tag='xtr'
AND timestamp<1353304800
AND timestamp>1350622800
GROUP BY tag;
今、最新の 150 行の移動平均を取得したいのですが、クエリの方法がわかりません。
SELECT t, s,avg(bv)
FROM
(SELECT A.timestamp as t,A.tag as ta,A.value as ac, B.timestamp as tb,B.value as bv,
FROM measures
CROSS JOIN measures B
WHERE A.tag='xtr' AND B.tag='xtr'
GROUP BY A.tag) WHERE ROWNUM <= 150;
これは明らかに間違っていますが、私はそれについて考えていて、理解できません。何か案は?私の考えでは、各エントリをその下の 150 エントリと照合し、value
それらの 150 エントリの平均を計算する必要があります。CROSS JOIN
また、非常に遅くなるため、 を使用しないほうがよい方法があると確信しています。