我无法找到在maria db,SQL表上执行简单添加的方法。
我有一张名为Traffic的表:
| start_time | end_time | col1 | col2 |
| 1485075600.000000 | 1485075900.000000 | 10 | 20 |
| 1485075900.000000 | 1485076200.000000 | 20 | 30 |
| 1485076200.000000 | 1485076500.000000 | 40 | 50 |
| 1485076500.000000 | 1485076800.000000 | 50 | 60 |
如何对每N列(在col1和col2上)进行求和?
我的意思是,合并行并对col1和col2的值求和。
假设给定的表,并且N = 2, 结果将是:
| start_time | end_time | col1 | col2|
| 1485075600.000000 | 1485076200.000000 | 30 | 50 |
| 1485076200.000000 | 1485076800.000000 | 90 | 110 |
如果表格大小不是N的倍数,请尽你所能。
任何人都有任何想法?我没有id分组。
答案 0 :(得分:0)
您可以通过枚举行来完成此操作。为了正确,您需要一个列来指定排序 - SQL表表示无序集,因此它们需要一个用于排序的列。
我假设它是start_time
。其余的只是聚合和算术:
select min(start_time) as start_time, max(end_time) as end_time,
sum(col1) as col1, sum(col2) as col2
from (select t.*, (@rn := @rn + 1) as rn
from traffic t cross join
(select @rn := 0) params
order by start_time
) t
group by floor( (rn - 1) / @N);
@N
值是组的大小。