来自每个x行的组的SUM

时间:2014-04-19 18:26:52

标签: mysql select group-by

我正在从MySQL数据库的大量数据中制作线图。我无法提取所有数据,因为PHP中允许的内存大小会耗尽,所以我需要重新采样数据。

我无法从数据库中选择(例如)每个第3行,因为每个数据点代表相对值(=用户余额的变化,如+5而不是实际的用户余额状态,可能是1000)所以我会需要是来自n行组的SUM。

example of data in database
-10
-10
-10
 20
 20
-20
-10
-10
 20

expected output for SUM grouping by 3 rows
-30
 20
  0

1 个答案:

答案 0 :(得分:2)

最快的方法是使用变量。

select sum(data)
from (select t.*, (@rn := @rn + 1) as rn
      from table t cross join
           (select @rn := -1) const
     ) t
group by rn div 3;

您应该有一个指定行的顺序的列,因此子查询将具有order by <ordering column>以确保一致的结果。