22,210
社区成员
发帖
与我相关
我的任务
分享
create table cf(riqi datetime , v int,w int)
insert into cf select '2011-02-13 18:07:07.000',10, 9
insert into cf select '2011-02-13 18:12:07.000',23, 67
insert into cf select '2011-02-13 18:19:07.000',55, 88
insert into cf select '2011-02-13 18:23:07.000',34, 54
insert into cf select '2011-02-13 18:26:07.000',56, 33
insert into cf select '2011-02-13 18:33:07.000',66, 33
insert into cf select '2011-02-13 18:38:07.000',23, 45
insert into cf select '2011-02-13 18:43:07.000',100, 455
insert into cf select '2011-02-13 18:49:07.000',56, 78
insert into cf select '2011-02-13 18:51:07.000',44, 67
insert into cf select '2011-02-13 18:53:07.000',55, 88
insert into cf select '2011-02-13 18:57:07.000',788, 89
insert into cf select '2011-02-14 18:02:07.000',5, 8
go
select convert(char(15),[riqi],120)+'0',avg(v),avg(w)
from cf
where riqi between '2011-02-13 00:00:00' and '2011-02-13 23:59:59'
group by convert(char(15),[riqi],120)
order by 1
go
drop table cf
/*
---------------- ----------- -----------
2011-02-13 18:00 10 9
2011-02-13 18:10 39 77
2011-02-13 18:20 45 43
2011-02-13 18:30 44 39
2011-02-13 18:40 78 266
2011-02-13 18:50 295 81
(6 行受影响)
*/
select convert(char(16),[riqi],120),avg(v),avg(w) from cf where riqi between '2011-02-13 00:00:00' and '2011-02-13 23:59:59' group by convert(char(15),[riqi],120)order by 1
select convert(char(16),[riqi],120),avg(v),avg(w) from cf
where riqi between '2011-02-13 00:00:00' and '2011-02-13 23:59:59'
group by datediff(mi,0,convert(char(16),[riqi],120))/10
order by 1
--datepart(minete,[riqi])
select convert(char(14),[riqi],120),cast(datepart(minete,) as int)/11,
avg(v),avg(w) from cf
where riqi between '2011-02-13 00:00:00' and '2011-02-13 23:59:59'
group by convert(char(14),[riqi],120),cast(datepart(minete,) as int)/11
order by 1
一个按五分钟分段统计的例
create table tb(时间 datetime , 金额 int)
insert into tb values('2007-1-1 10:00:23' , 8 )
insert into tb values('2007-1-1 10:01:24' , 4 )
insert into tb values('2007-1-1 10:05:00' , 2 )
insert into tb values('2007-1-1 10:06:12' , 3 )
insert into tb values('2007-1-1 10:08:00' , 1 )
insert into tb values('2007-1-1 10:12:11' , 5 )
go
--时间段>=10:00:00 and 时间段<10:05:00
select dateadd(mi,(datediff(mi,convert(varchar(10),dateadd(ss,-1,时间),120),dateadd(ss,-1,时间))/5)*5,convert(varchar(10),时间,120)) as 时间段,
count(*) as 行数,
sum(金额) as 总金额
from tb
group by dateadd(mi,(datediff(mi,convert(varchar(10),dateadd(ss,-1,时间),120),dateadd(ss,-1,时间))/5)*5,convert(varchar(10),时间,120))
/*
时间段 行数 总金额
------------------------------------------------------ ----------- -----------
2007-01-01 10:00:00.000 3 14
2007-01-01 10:05:00.000 2 4
2007-01-01 10:10:00.000 1 5
(所影响的行数为 3 行)
*/
--时间段>10:00:00 and 时间段<=10:05:00
select dateadd(mi,(datediff(mi,convert(varchar(10),dateadd(ss,1,时间),120),dateadd(ss,1,时间))/5)*5,convert(varchar(10),时间,120)) as 时间段,
count(*) as 行数,
sum(金额) as 总金额
from tb
group by dateadd(mi,(datediff(mi,convert(varchar(10),dateadd(ss,1,时间),120),dateadd(ss,1,时间))/5)*5,convert(varchar(10),时间,120))
/*
时间段 行数 总金额
------------------------------------------------------ ----------- -----------
2007-01-01 10:00:00.000 2 12
2007-01-01 10:05:00.000 3 6
2007-01-01 10:10:00.000 1 5
(所影响的行数为 3 行)
*/
drop table tb