我有一個數據表的類型日期時間的字段獲取數據和我有數據,如3-5項爲每分鐘即SQL查詢與時間間隔
23/08/2012 18:05:01,
23/08/2012 18:05:15,
23/08/2012 18:05:26,
23/08/2012 18:05:44,
23/08/2012 18:05:59
現在我需要得到對於每5分鐘
數據的一個記錄任何一個可以請幫助我,我怎麼可以這樣做一個
感謝
我有一個數據表的類型日期時間的字段獲取數據和我有數據,如3-5項爲每分鐘即SQL查詢與時間間隔
23/08/2012 18:05:01,
23/08/2012 18:05:15,
23/08/2012 18:05:26,
23/08/2012 18:05:44,
23/08/2012 18:05:59
現在我需要得到對於每5分鐘
數據的一個記錄任何一個可以請幫助我,我怎麼可以這樣做一個
感謝
我不知道如果我完全理解你的要求,但下面的意志 - [R E打開一個記錄,其中分鐘爲5的倍數的任何值:
select *
from
(
select *,
datepart(minute, yourDate) mn,
row_number() over(partition by datepart(minute, yourDate) order by yourDate) rn
from yourTable
) x
where (mn % 5) = 0
and rn = 1
由於看起來像這樣的表:
create table some_event_log_table
(
id int not null identity(1,1) primary key clustered ,
dateTimeLogged datetime not null ,
... some more columns here --
)
然後查詢類似下面的(SqlFiddle在http://sqlfiddle.com/#!3/5ad56/1/0)應該這樣做:
select dateLogged = convert(date,dateTimeLogged),
periodID = datediff(minute,
convert(date,dateTimeLogged) ,
dateTimeLogged
)/5 ,
period_start = convert(time,
dateadd(minute,
datediff(minute,
convert(date,dateTimeLogged),
dateTimeLogged
) ,
convert(datetime,convert(date,dateTimeLogged))
)
) ,
events_logged = count(*)
from some_event_log_table
group by convert(date,dateTimeLogged),
datediff(minute,
convert(date,dateTimeLogged) ,
dateTimeLogged
)/5 ,
convert(time,
dateadd(minute,
datediff(minute,
convert(date,dateTimeLogged),
dateTimeLogged
) ,
convert(datetime,convert(date,dateTimeLogged))
)
)
我們在這裏做的是以下內容。
首先,我們把一天分成的每次5分鐘時間。每天有288個這樣的5分鐘時間。
然後,在該表的每一行,我們
計算列dateLogged
,申報日期(SANS時間)的行。
計算列periodID
,值爲0-287,指示該行每天在288個5分鐘期間中的哪一個落入。
計算行所在時段的開始時間periodStart
列。
最後,我們
group by
總結一下,在一天內的每個週期生成1組,對我們只是計算每行的3個值進行分組。dateLogged
和periodID
上命令結果集爲order by
。這是對所有有它。真的很簡單,一旦你分解。
每5分組中的任何特定記錄?第一?持續?隨機? –
三件事情:(1)你到目前爲止嘗試過什麼? (2)對於可以被5整除的每分鐘,選擇一條記錄? (3)由於每分鐘會有一個以上的記錄,您如何知道選擇哪一個? – LittleBobbyTables
不是每一個在5我需要得到記錄與用戶定義的時間間隔說5分鐘那樣 – Srikanth