我有一个数据表的类型日期时间的字段获取数据和我有数据,如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