2012-02-18 5 views
3

SQL Server 2008 R2を使用しており、時間間隔でグループ化された新しいテーブルを作成する必要があります。グループOHLC-Stockmarket T-SQLを使用した複数のタイムフレームへのデータ

このデータは、株式市場のインデックスのデータです。私は1分間隔でデータを持っています。今は5,10,15,30,45,60 ...分間隔でデータが必要です。私の主なキーはタイムスタンプです。

私の質問は、特定の時間間隔、例えば5分間隔でグループ化されたデータを返すために1分データテーブルを照会する方法です。

クエリでは、特定のグループの最も高い値、最も低い値、最後の値、最初の値、最も重要なのはグループのタイムスタンプの最後の値も返さなければなりません。

私は非常にSQL言語を使い慣れていて、ネット上で数多くのコードを試しましたが、望みの結果を正確に返すことはできません。

データ:

TimeStamp   | Open | High | Low | Close 
2012-02-17 15:15:0 | 102 | 110 |100 |105 
2012-02-17 15:16:0 |106 |112 |105 |107 
2012-02-17 15:17:0 | 106 |110 |98 |105 
2012-02-17 15:18:0 |105 |109 |104 |106 
2012-02-17 15:19:0 |107 |112 |107 |112 
2012-02-17 15:20:0 |115 |125 |115 |124 

目的のクエリ結果(5分):

Timestamp  |Open|High|Low|Close 
2012-02-15:19:0 |102 |125 |98 |124 
2012-02-15:24:0 |115.|....|...|... 
2012-02-15:29:0 |....|....|...|... 
+0

ようこそですエディタツールバーの "コードサンプル"ボタン( '{}')を使ってきれいに書式を設定し、構文を強調表示することができます! –

答えて

3

あなたはfloatdatetimeを変換するときは、日数を取得します。 24 * 12でそれを掛け合わせると、5分の間隔が得られます。だから、上の場合は、あなたのグループ:SQL Serverでトリッキーで最初と最後の行を見つける

select min(timestamp) 
,  max(high) as Highest 
,  min(low) as Lowest 
from @t 
group by 
     cast(cast(timestamp as float) * 24 * 12 as int) 

cast(cast(timestamp as float) * 24 * 12 as int) 

あなたは5分ごとに集計を行うことができます。ここでrow_numberを使用して一つの方法だ:あなたは、コード、XMLまたはデータサンプルを投稿する場合は、** **テキストエディタでこれらの行をハイライト表示し、 "をクリックしてください:

select min(timestamp) 
,  max(high) as Highest 
,  min(low) as Lowest 
,  min(case when rn_asc = 1 then [open] end) as first 
,  min(case when rn_desc = 1 then [close] end) as Last 
from (
     select row_number() over (
        partition by cast(cast(timestamp as float) * 24 * 12 as int) 
        order by timestamp) as rn_asc 
     ,  row_number() over (
        partition by cast(cast(timestamp as float) * 24 * 12 as int) 
        order by timestamp desc) as rn_desc 
     ,  * 
     from @t 
     ) as SubQueryAlias 
group by 
     cast(cast(timestamp as float) * 24 * 12 as int) 

ここにStackOverflowにworking example at SE Data.

+0

ありがとう、Andomar、これはまさに私が必要としていたものでした。 –

関連する問題