gpt4 book ai didi

mysql - 如何对 mariadb SQL 中的每 N 行求和?

转载 作者:行者123 更新时间:2023-11-29 19:30:40 25 4
gpt4 key购买 nike

我无法找到一种方法来对 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com