这个是 一分钟一条数据的,我现在是想要 每隔五分钟求和结果是
CreateDate AccessCount FinishCount AwardCount
2012-08-26 00:05:00.000 100 200 300
2012-08-26 00:10:00.000 6900 1200 2300
2012-08-26 00:15:00.000 910 9200 2666
用sql查询出来,怎么弄? 是每隔5分钟求和的,请教高手,谢谢!
使用日期函数处理结合GROUP BY 分组汇总可以实现,
日期处理成( 年-月-日 时 + 分钟/5)
group by 的字段为
SELECT CONVERT(VARCHAR(14),CreateDate,120)+CONVERT(VARCHAR(2),DATEPART(mi,CreateDate )/5) 统计时间, COUNT(*) 数目 from TABLE GROUP BY CONVERT(VARCHAR(14),CreateDate,120)+CONVERT(VARCHAR(2),DATEPART(mi,CreateDate )/5)
楼主可以提供详细的表名字段名,以及测试数据,然后我将语句调整下。
表结构如下这样的:
CreateDate AccessCount FinishCount AwardCount
2012-08-26 00:01:00.000 100 200 300
2012-08-26 00:02:00.000 6900 1200 2300
2012-08-26 00:03:00.000 910 9200 2666
2012-08-26 00:04:00.000 910 9200 2666
2012-08-26 00:05:00.000 910 9200 2666
不是count(*) 是sum(TaskAcessCount),sum(TaskFinishCount),sum(TaskAward)
貌似你上面的,是行不通的, DATEPART(mi,CreateDate )/5 这样不行
查询出来的结果是这样的,不是我想要的啊,再次请教,谢谢
@*滴血*:
还原了日期真实时间,
SELECT LEFT(totalTime, 14) + CONVERT(VARCHAR(2), CAST(SUBSTRING(totalTime, 15, 2) AS INT) * 5) trueTime, * FROM ( SELECT CONVERT(VARCHAR(14), CreateDate , 120) + CONVERT(VARCHAR(2), DATEPART(mi, CreateDate ) / 5) totalTime, sum(TaskAcessCount) AccessCount ,sum(TaskFinishCount) FinishCount,sum(TaskAward) AwardCount FROM TotalTable GROUP BY CONVERT(VARCHAR(14), CreateDate , 120) + CONVERT(VARCHAR(2), DATEPART(mi, CreateDate ) / 5) ) A
你的CreateDate 是时间类型型的数据吗?
如果不是时间类型,
就是用 convert(datetime,CreateDate ,120) 替换掉语句中的
CreateDate
楼上的方法可以实现
楼主的数据时一分钟一条,字段id也是相互对应的,前五分钟的数据也是钱五个id的数据,楼主可以选择游标,然后查询的时候获取id为1到5条的数据和,1和5变为参数就OK了,希望楼主早日解决问题。