を返すために以下のように列を持つテーブルがあります:SQL - クエリ結果
Id : long autoincrement;
timestamp:long;
price:long
タイムスタンプをミリ秒でUNIX_TIMEとして与えられています。
質問:レコードの平均時間差はどのくらいですか?推測で
を返すために以下のように列を持つテーブルがあります:SQL - クエリ結果
Id : long autoincrement;
timestamp:long;
price:long
タイムスタンプをミリ秒でUNIX_TIMEとして与えられています。
質問:レコードの平均時間差はどのくらいですか?推測で
を、あなたはその情報を取得するためにそのような何かを書くことができ:
SELECT
t1.ID, t2.ID,
DATEDIFF(MILLISECOND, t2.PriceTime, test2.PriceTime)
FROM table t1
INNER JOIN table t2 ON t2.ID = t1.ID-1
WHERE t1.ID > (SELECT MIN(ID) FROM table)
、あなたが」すべてのエントリでAVGにのみ関心がある場合は、次のように使用できます。
SELECT
AVG(DATEDIFF(MILLISECOND, t2.PriceTime, test2.PriceTime))
FROM table t1
INNER JOIN table t2 ON t2.ID = t1.ID-1
WHERE t1.ID > (SELECT MIN(ID) FROM table)
基本的には、自分自身でテーブルを結合し、 "t1.ID = t2.ID-1"を使用してアイテム番号を関連付けます。 2を1つの表に記載してください。 1を計算し、その間の時間差を計算します。アイテム番号へのアクセスを避けるために0が存在しない場合は、 "T1.ID>(SELECT MIN(ID)FROMテーブル)"句を使用して2番目の項目から開始します。
マルク・
これはIDにギャップがない場合にのみ機能します。 –
@Adam:true - 良い点 –
OK、OPのコメントを参照してください - それは "AUTOINCREMENT"列なので、間違いなく(間違いなく:-)そのようになることはありません) –
:
SELECT AVG(timestamp)
私はあなたが私たちが支援するためにあなたの質問に多くの情報を提供する必要があると思います。
はn個のレコードがあると仮定します。 質問はレコード間の平均時間差に似ていますか?ここでは 、レコード間の微妙な違いがあります。 camあなたはどんな種類の情報をもっと必要としているか教えてください。 – Siv
あなたはそれぞれ、他の列の間の差を意味している場合:SQL Serverでの
select AVG(x) from (
select a.timestamp - b.timestamp as x
from table a, table b -- this multiplies a*b) sub
まず考えたのは、すぐ前のレコードをつかんサブクエリです:
SELECT timestamp -
(select top 1 timestamp from Table T1 where T1.Id < Table.Id order by Id desc)
FROM Table
その後、あなたはそれの平均をとることができます。
SELECT AVG(delta)
from (SELECT timestamp -
(select top 1 timestamp from Table T1 where T1.Id < Table.Id order by Id desc) as delta
FROM Table) T
は、おそらくにあります必要があります。最初の行のために結果がnullのいくつかの処理がありますが、私は確かにテストしていません。
「トップ1」の部分をOracle同等物に合わせる必要があります。私はOracleと作業して以来、長すぎます。 –
この
Select Avg(E.Timestamp - B.Timestamp)
From Table B Join Table E
On E.Timestamp =
(Select Max(Timestamp)
From Table
Where Timestamp < R.Timestamp)
Oracle 10gデータベースを試してみてください。 – Siv
@Marc、2番目のクエリは正しい結果を返します。 ありがとう。 – Siv
OK、私の答えは元に戻すことができます:-)ありがとう! しかし、Adamのコメントは全く真実であることに注意してください。私の質問は、IDが連続的で、ギャップがない場合にのみ機能します。 –