遇到一个SQL难题,就是希望通过通过时间段分组动态统计相关数据,即希望取得一小时内
每5分钟(或每10分钟--这个时间段参数可动态设置)每类数据的总量。难题主要在于这个统计时段是可以被设置的,即,可以设置为按5分钟统计,10分钟统计,15分钟
统计等,每次统计一个小时范围内的。时间方面数据库表中有开始时间和结束时间,其类型为numeric,是根据GMT相对换算的。看了版上一些根据时间、分数分组的方法,很多都是通过对2006-1-1 12:10:12这种时间中的10分钟位取group而分组统计的,分数方面也是通过写大量的case ......xxx>80 之类的方法来实现的,对于我这种可非固定的时间范围分组统计,似乎没有比较好的解决方法。特此请各位大侠赐教。
数据库表结构如下:
CREATE TABLE [TEST] (
[ID] [numeric](28, 0) IDENTITY (1, 1) NOT NULL ,
[START_TIME] [numeric](28, 0) NOT NULL ,   -----开始时间
[END_TIME] [numeric](28, 0) NOT NULL , -----结束时间
[type] [varchar] (63) COLLATE Chinese_PRC_CI_AS NULL , -----数据类别
[capacity] [numeric](28, 0) NULL  -----数量
) ON [GROUP01]
GO
数据库例子如下:
--------------------------------------------------------------------------------------id          start_time          end_time type  capacity
1 1137776000 1137776100 AAA   1000
2 1137776200 1137777100 AAA   2000
3 1137776000 1137776100 BBB   3000
4 1137777000 1137777600 BBB   4000
5 1137776000 1137776100 CCC   5000
--------------------------------------------------------------------------------------
希望获取结果:
-------------------------------------------
Stat_time type sum(capacity)
1137776000 AAA XXXX
1137777000 AAA XXXX
1137776000 BBB XXXX
1137777000 BBB XXXX
1137776000 CCC XXXX
1137777000 CCC XXXX
-------------------------------------------