php - 计算指定时间间隔的列总和

标签 php mysql laravel

我有一个由时间和这些时间的值组成的表。例如:

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/

相关文章:

javascript - Symfony CMF CSS 未加载 : Resource interpreted as Stylesheet but transferred with MIME type text/html:

php - 为什么 mysql order by 关键字不能按预期与 GROUP by 关键字一起工作?

html - 从 Laravel 4 的表中隐藏特定用户的最佳方法是什么?

javascript - 在网站上炫耀一个巨大的文本文件

php - 如何删除包含某个子字符串的所有 PHP 数组元素?

php - PHP 中的高级搜索选项

mysql按列A搜索重复项并按其他列的条件删除

mysql - 如何向 MySQL 数据字段添加正则表达式?

php - 使用 Laravel 查询多个字段

php - Laravel session 在 native PHP 中不可用?