3

我有一个定期测量的 SQL 表。我希望能够在 value 列上返回一些汇总方法(比如 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()调用之后)任何适用于上述简单情况的东西都应该适用。如果重要的话,我正在尝试优雅地缩放为绘图查询返回的结果数量——也许有更聪明的方法来做到这一点?我希望解决方案是通用的,而不是对数据强加特定的存储机制/模式。

4

1 回答 1

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);
于 2012-06-13T15:45:40.070 回答