【发布时间】:2019-04-02 18:01:56
【问题描述】:
我正在尝试根据 DateTime 行计算当前行和前 4 行之间两列“重量”和“体积”的滚动总和。这些是大量的日志,有时我们会收到多个负载。所以本质上,每次有新的负载进来时,它都会根据自己和前 4 行计算一个新的滚动总和。我正在使用 MySQL 5.7。请记住,每一行都不是新日期。数据应该是这样的......
DateTime | Weight | Volume | Roll_Weight | Roll_Volume
2019-01-01 08:00:00 | 54000 | 72.2 | 54000 | 72.2
2019-01-01 09:30:00 | 29000 | 38.0 | 83000 | 110.2
2019-01-05 13:00:00 | 38900 | 54.8 | 118900 | 165.0
2019-01-06 07:00:00 | 44000 | 56.2 | 162900 | 221.2
2019-01-06 12:30:00 | 49000 | 18.0 | 211900 | 239.2
2019-01-07 09:00:00 | 27900 | 84.5 | 185800 | 251.5
2019-01-10 08:00:00 | 94000 | 72.6 | 250800 | 286.1
2019-01-10 13:30:00 | 65000 | 39.7 | 286800 | 271.0
2019-01-10 15:00:00 | 38900 | 50.5 | 274800 | 265.3
Select DateTime, Sum(Weight), Sum(Volume) over (Partition by DateTime ORDER BY DateTime asc 4 preceding)
From t1
我知道,因为我使用的是 MySQL 5.7,所以我没有能力使用 OVER,但这似乎是我需要的。解决此问题的最佳方法是什么?我发现的所有资源的每一行都有不同的日期,所以他们只是在日期上使用自联接查询,但我不能这样做,因为我是按行滚动。
【问题讨论】: