按時間間隔查詢統計

[code=SQL]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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章