我有一个定期测量的SQL表。我希望能够在值列上返回一些汇总方法(比如SUM),一次可以返回任意数量的行。所以,如果我有
id | reading
1 10
5 14
7 10
11 12
13 18
14 16
我一次可以总计超过2行,得到(24,22,34),或者我可以一次总计3行并得到(34,46),如果这是有道理的。请注意,ID可能不是连续的 - 我只想按行排序操作。
在现实世界中,标识符是时间戳,但我认为(可能在应用unix_timestamp()
调用之后)任何适用于上述简单情况的内容都应适用。如果重要的话,我正在尝试优雅地缩放为绘图查询返回的结果数量 - 也许有更聪明的方法来做到这一点?我希望解决方案是通用的,而不是对数据强加特定的存储机制/架构。
答案 0 :(得分:2)
您可以重新排序查询结果然后将其分组
SET @seq = 0;
SELECT SUM(data), ts FROM (
SELECT @seq := @seq + 1 AS seq, data, ts FROM table ORDER BY ts LIMIT 50
) AS tmp GROUP BY floor(tmp.seq / 3);