首页 新闻 赞助 找找看

怎么查询这样的数据 ?

0
悬赏园豆:5 [已解决问题] 解决于 2012-09-27 17:40

这个是   一分钟一条数据的,我现在是想要  每隔五分钟求和结果是

               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分钟求和的,请教高手,谢谢!

Piero's的主页 Piero's | 初学一级 | 园豆:0
提问于:2012-09-24 14:28
< >
分享
最佳答案
1

使用日期函数处理结合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) 

楼主可以提供详细的表名字段名,以及测试数据,然后我将语句调整下。

 

收获园豆:3
acepro | 小虾三级 |园豆:1218 | 2012-09-24 14:52

表结构如下这样的:

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  这样不行

Piero's | 园豆:0 (初学一级) | 2012-09-24 15:00

查询出来的结果是这样的,不是我想要的啊,再次请教,谢谢

Piero's | 园豆:0 (初学一级) | 2012-09-24 15:05

@*滴血*: 

还原了日期真实时间,

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
 
acepro | 园豆:1218 (小虾三级) | 2012-09-24 17:06
其他回答(2)
0

楼上的方法可以实现

收获园豆:1
jason2013 | 园豆:1998 (小虾三级) | 2012-09-24 14:58
0

楼主的数据时一分钟一条,字段id也是相互对应的,前五分钟的数据也是钱五个id的数据,楼主可以选择游标,然后查询的时候获取id为1到5条的数据和,1和5变为参数就OK了,希望楼主早日解决问题。

收获园豆:1
墨猦 | 园豆:668 (小虾三级) | 2012-09-24 17:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册