我有一个表,在不同时期插入记录(每个记录包含一个名为'Amount'的列) .
我想在每5秒后显示累计总量 . 我尝试了以下查询但没有成功:
SELECT Sum(totalamount) AS RealTimeTotalAmount,
Datepart(second, createstamp) / 5 AS dp
FROM [order]
WHERE
createstamp BETWEEN Dateadd(s, -5, Getdate()) AND Getdate()
GROUP BY Datepart(second, createstamp) / 5
我面临的问题是,它向我显示了“每秒的累计金额”,我希望看到它像'(累计金额按每秒累计金额直到那一秒)'
以下是源数据的外观:
-----------------------------------------------------------
|OrderID | CreateStamp | TotalAmount |
-----------------------------------------------------------
|1 |2015-03-22 15:26:05.620 | 10 |
-----------------------------------------------------------
|2 |2015-03-22 15:26:05.653 | 20 |
-----------------------------------------------------------
|3 |2015-03-22 15:26:05.660 | 10 |
-----------------------------------------------------------
|4 |2015-03-22 15:26:06.663 | 10 |
-----------------------------------------------------------
|5 |2015-03-22 15:26:06.670 | 30 |
-----------------------------------------------------------
基本上,我希望生成的查询返回如下:
----------------------------------------
|Period | Accumulative Amount |
----------------------------------------
|0 to 5 seconds | 30 |
----------------------------------------
|0 to 10 seconds | 80 |
----------------------------------------
这基本上是从0时间到5的倍数的累积 . 对于最后5秒基本上我计算一整天的数量直到我执行此查询的时间,例如在此时间之前的整天的数量是50所以结果表应该是这样的
----------------------------------------
|0 to 5 seconds | 30 + 50 = 80 |
----------------------------------------
|0 to 10 seconds | 80 + 80 = 160 |
----------------------------------------
2 回答
你可以尝试这样的事情 .
Input Data
Query
我已经为不同的日期和分钟添加了
GROUP BY DATEDIFF(minute,0,CreateStamp)
来分隔秒数 .如果我理解正确的话:
输出: