我在寻找一种方法对maria db,SQL表执行简单加法时遇到了麻烦。

我有一个名为“交通”的表格:

| 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。

最佳答案

您可以通过列举行来做到这一点。正确地说,您需要一列来指定顺序-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值是组的大小。

关于mysql - 如何在mariadb SQL中对每N行求和?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41792545/

10-13 08:06