0

イベントが発生したときにログに記録する情報のデータセットがあります。そのデータを 1 日のさまざまな時間帯で要約できるようにしたいと考えています。私の RAW データには、イベントのシステム時刻がタイムスタンプされているだけです。1 時間に発生するイベントの数を計算できる SQL クエリがあります。

例または 3 日間の RAW データ、

Time_Period             Count
------------------------------  
29/07/13 08:00:00       2  
29/07/13 09:00:00       19  
29/07/13 10:00:00       21  
29/07/13 11:00:00       30  
29/07/13 12:00:00       21  
29/07/13 13:00:00       24  
29/07/13 14:00:00       18  
29/07/13 15:00:00       35  
29/07/13 16:00:00       17  
29/07/13 17:00:00       3  
30/07/13 09:00:00       20  
30/07/13 10:00:00       47  
30/07/13 11:00:00       22  
30/07/13 12:00:00       19  
30/07/13 13:00:00       26  
30/07/13 14:00:00       30  
30/07/13 15:00:00       20  
30/07/13 16:00:00       26  
30/07/13 17:00:00       10  
30/07/13 18:00:00       1  
31/07/13 08:00:00       1  
31/07/13 09:00:00       23  
31/07/13 10:00:00       28  
31/07/13 11:00:00       18  
31/07/13 12:00:00       25  
31/07/13 13:00:00       17  
31/07/13 14:00:00       17  
31/07/13 15:00:00       36  
31/07/13 16:00:00       22  
31/07/13 17:00:00       8  
31/07/13 20:00:00       1 

ただし、私が達成したいのは、このデータを取得し、フィールドの日付部分を無視して要約することです (他の人が望んでいるように、時間ではありません)

このような結果が得られます。(上記3日間)

Time_Period   Sum_Count
-----------------------
08:00:00        23  
09:00:00        89  
10:00:00        71  
11:00:00        67  
12:00:00        72  
13:00:00        71  
14:00:00        55  
15:00:00        97    
16:00:00        49    
17:00:00        12    
18:00:00        1   

コードでそれを行い、答えを一時テーブルにダンプすることができました。ただし、最初に SQL で正しく実行すると、さまざまなシステムから簡単に呼び出すことができます。

4

2 に答える 2

1
SELECT
    HourMinuteSecond=CONVERT(TIME,YOURDATE),
    GroupCount=COUNT(*)
FROM 
   YOURTABLE
GROUP BY CONVERT(TIME,YOURDATE)
于 2013-08-28T03:41:43.407 に答える
0

単純な :

select count(*),
convert(sysname,DATEPART(HOUR,Time_Period ))+':'+
convert(sysname,DATEPART(minute,Time_Period ))+':'+
convert(sysname,datepart(second,Time_Period ))
from YourTable
group by 
convert(sysname,DATEPART(HOUR,Time_Period ))+':'+
convert(sysname,DATEPART(minute,Time_Period ))+':'+
convert(sysname,datepart(second,Time_Period ))

SQL2012 を使用している場合は、TIMEFROMPARTS関数を使用して厳密に型指定された時刻を作成できます。以前のバージョンを使用している場合は、上記の例で文字列を正当化し、ORDER BY句を追加します

于 2013-08-28T03:52:59.463 に答える