请问如何每5分钟取一条数据
数据类似下面:
usrid t1 其他字段............
12012-11-11 11:11
12012-11-11 11:12
12012-11-11 11:13
12012-11-11 11:14
12012-11-11 11:15
12012-11-11 11:16
12012-11-11 11:17
12012-11-11 11:18
12012-11-11 11:19
12012-11-11 11:20
12012-11-11 11:21
12012-11-11 11:22
12012-11-11 11:23
12012-11-11 11:24
12012-11-11 11:25
12012-11-11 11:26
12012-11-11 11:27
12012-11-11 11:28
12012-11-11 11:29
22012-11-11 11:11
22012-11-11 11:12
22012-11-11 11:13
22012-11-11 11:14
22012-11-11 11:15
22012-11-11 11:16
22012-11-11 11:17
22012-11-11 11:18
22012-11-11 11:19
22012-11-11 11:20
22012-11-11 11:21
22012-11-11 11:22
22012-11-11 11:23
22012-11-11 11:24
22012-11-11 11:25
22012-11-11 11:26
22012-11-11 11:27
22012-11-11 11:28
22012-11-11 11:29
得到结果为
usrid t1 其他字段.....
12012-11-11 11:11
12012-11-11 11:16
12012-11-11 11:21
12012-11-11 11:26
22012-11-11 11:11
22012-11-11 11:16
22012-11-11 11:21
22012-11-11 11:26
[解决办法]
create table tb(usrid int,t1 datetime)
insert into tb
select 1,'2012-11-11 11:11' union all
select 1,'2012-11-11 11:12' union all
select 1,'2012-11-11 11:13' union all
select 1,'2012-11-11 11:14' union all
select 1,'2012-11-11 11:15' union all
select 1,'2012-11-11 11:16' union all
select 1,'2012-11-11 11:17' union all
select 1,'2012-11-11 11:18' union all
select 1,'2012-11-11 11:19' union all
select 1,'2012-11-11 11:20' union all
select 1,'2012-11-11 11:21' union all
select 1,'2012-11-11 11:22' union all
select 1,'2012-11-11 11:23' union all
select 1,'2012-11-11 11:24' union all
select 1,'2012-11-11 11:25' union all
select 1,'2012-11-11 11:26' union all
select 1,'2012-11-11 11:27' union all
select 1,'2012-11-11 11:28' union all
select 1,'2012-11-11 11:29' union all
select 2,'2012-11-11 11:11' union all
select 2,'2012-11-11 11:12' union all
select 2,'2012-11-11 11:13' union all
select 2,'2012-11-11 11:14' union all
select 2,'2012-11-11 11:15' union all
select 2,'2012-11-11 11:16' union all
select 2,'2012-11-11 11:17' union all
select 2,'2012-11-11 11:18' union all
select 2,'2012-11-11 11:19' union all
select 2,'2012-11-11 11:20' union all
select 2,'2012-11-11 11:21' union all
select 2,'2012-11-11 11:22' union all
select 2,'2012-11-11 11:23' union all
select 2,'2012-11-11 11:24' union all
select 2,'2012-11-11 11:25' union all
select 2,'2012-11-11 11:26' union all
select 2,'2012-11-11 11:27' union all
select 2,'2012-11-11 11:28' union all
select 2,'2012-11-11 11:29'
go
;with cte as(
select * from tb a where not exists(select 1 from tb where usrid=a.usrid and t1<a.t1)
union all
select a.* from tb a inner join cte b on a.usrid=b.usrid and datediff(mi,b.t1,a.t1)=5
)
select * from cte order by usrid,t1
/*
usrid t1
----------- -----------------------
1 2012-11-11 11:11:00.000
1 2012-11-11 11:16:00.000
1 2012-11-11 11:21:00.000
1 2012-11-11 11:26:00.000
2 2012-11-11 11:11:00.000
2 2012-11-11 11:16:00.000
2 2012-11-11 11:21:00.000
2 2012-11-11 11:26:00.000
(8 行受影响)
*/
go
drop table tb
[解决办法]
declare @tb table (usrid int,t1 datetime)
insert into @tb
select 1,'2012-11-11 11:11' union all
select 1,'2012-11-11 11:12' union all
select 1,'2012-11-11 11:13' union all
select 1,'2012-11-11 11:14' union all
select 1,'2012-11-11 11:15' union all
select 1,'2012-11-11 11:16' union all
select 1,'2012-11-11 11:17' union all
select 1,'2012-11-11 11:18' union all
select 1,'2012-11-11 11:19' union all
select 1,'2012-11-11 11:20' union all
select 1,'2012-11-11 11:21' union all
select 1,'2012-11-11 11:22' union all
select 1,'2012-11-11 11:23' union all
select 1,'2012-11-11 11:24' union all
select 1,'2012-11-11 11:25' union all
select 1,'2012-11-11 11:26' union all
select 1,'2012-11-11 11:27' union all
select 1,'2012-11-11 11:28' union all
select 1,'2012-11-11 11:29' union all
select 2,'2012-11-11 11:11' union all
select 2,'2012-11-11 11:12' union all
select 2,'2012-11-11 11:13' union all
select 2,'2012-11-11 11:14' union all
select 2,'2012-11-11 11:15' union all
select 2,'2012-11-11 11:16' union all
select 2,'2012-11-11 11:17' union all
select 2,'2012-11-11 11:18' union all
select 2,'2012-11-11 11:19' union all
select 2,'2012-11-11 11:20' union all
select 2,'2012-11-11 11:21' union all
select 2,'2012-11-11 11:22' union all
select 2,'2012-11-11 11:23' union all
select 2,'2012-11-11 11:24' union all
select 2,'2012-11-11 11:25' union all
select 2,'2012-11-11 11:26' union all
select 2,'2012-11-11 11:27' union all
select 2,'2012-11-11 11:28' union all
select 2,'2012-11-11 11:29'
if OBJECT_ID('tb') is not null
drop table tb
;with tb as
(
select * from @tb a where a.usrid not in(select usrid from @tb where usrid=a.usrid and t1<a.t1)
union all
select a.* from @tb a,tb b where a.usrid=b.usrid and datediff(mi,b.t1,a.t1)=5
)
select * from tb order by usrid,t1
[解决办法]