我有一个由时间和这些时间的值组成的表。例如:
Hour Value1 Value2
9 100 1
10 170 4
11 30 17
12 144 59
13 6 1
.
.
.
23 204 8
我需要计算每列的 Value1 和 Value2,但指定时间段(间隔)。
例如:
00-09h Value1 = 100, Value2 = 1
09-11h Value1 = 300, Value2 = 22
11-13h Value1 = 180, Value2 = 77
13h-21h Value1 = ..., Value2 = ...
我能想到的就是为每个间隔创建数组,然后用循环填充它们(检查值是否属于该间隔,然后将其推送到数组)。
但是有没有更方便、更高效的方法呢?有查询吗?
最佳答案
使用 sum()
和 whereBetween()
:
$model = Model::all();
$totalValue1=$model->whereBetween('hour',[9,11])->sum('value1');
$totalValue2=$model->whereBetween('hour',[9,11])->sum('value2');
$totalValue1=$model->whereBetween('hour',[11,13])->sum('value1');
$totalValue2=$model->whereBetween('hour',[11,13])->sum('value2');
$totalValue1=$model->whereBetween('hour',[13,21])->sum('value1');
$totalValue2=$model->whereBetween('hour',[13,21])->sum('value2');
关于php - 计算指定时间间隔的列总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41957190/