Sql 如何按时间间隔分组数据?
这是我的桌子:Sql 如何按时间间隔分组数据?,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,这是我的桌子: SNO ID TimeRecorded LAT LON STATE SPEED 7 0 2015-05-16 12:54:09.000 22.63006 88.362144 NULL 0 8 0 2015-05-16 12:55:09.000 22.63006 88.362144 NULL 0 9 1 2015-05-16 13:01:09.000 22.6300
SNO ID TimeRecorded LAT LON STATE SPEED
7 0 2015-05-16 12:54:09.000 22.63006 88.362144 NULL 0
8 0 2015-05-16 12:55:09.000 22.63006 88.362144 NULL 0
9 1 2015-05-16 13:01:09.000 22.63006 88.362144 NULL 0
10 1 2015-05-16 13:05:09.000 22.63006 88.362144 NULL 0
如何只选择1小时的1条记录?我想这样选择:
7 0 2015-05-16 12:54:09.000 22.63006 88.362144 NULL 0 and
10 1 2015-05-16 13:05:09.000 22.63006 88.362144 NULL 0
使用行编号()
:
注意:这将返回每个小时的第一条记录。如果确实需要任意记录,可以使用
orderbynewid()
而不是orderbytimerecorded
在示例中确定要获取SNO 10吗?你想要一小时内的第一张唱片吗?这个问题不是很重要clear@christianBarron,这是位置报告,车速通常为5公里/小时,所以我只需要一个小时的记录,即任何一个。。。
select t.*
from (select t.*,
row_number() over (partition by cast(timerecorded as date), datepart(hour, timerecorded)
order by timerecorded
) as seqnum
from table t
) t
where seqnum = 1;