我正在从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
答案 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>
以确保一致的结果。