【问题标题】:sum() each quantity which have same id [duplicate]sum() 每个具有相同 id 的数量 [重复]
【发布时间】:2020-02-28 07:10:19
【问题描述】:

大家好,这是我的表,名为“输入”。我想对具有相同 TID 的值求和:

re   |  in_ID|   Value  |
========================= 
 1   |   1   |   3  | 
 2   |   1   |   3  |  
 3   |   1   |   4  |  
 4   |   1   |   5  |  
 5   |   2   |   3  |  
 6   |   2   |   3  |  
 7   |   2   |   2  |  
 8   |   2   |   2  |

我的结果应该是这样的

in_ID| sum(Value)|
==================   
 1   |   14      |   
 2   |   20      |

我的尝试是:

public function sum(){        
    return production_input::select('in_id' , 'value')->sum('value')->groupBy(['in_id']);
}  

【问题讨论】:

  • 有什么问题?
  • 没有得到我描述的结果。

标签: php laravel eloquent


【解决方案1】:

试试这个方法。

public function sum(){
        return production_input::select([\DB::raw("SUM(value) as value"), 'in_id'])
                                 ->groupBy('in_id')
                                 ->get();
}  

【讨论】:

  • 非常感谢。你能描述一下这是如何工作的吗?
  • 可以在没有原始查询的情况下工作,即 \DB::raw("SUM(value) as value"), 'in_id']) ->groupBy('in_id')
  • 当您将 groupBy 与 in_id 一起使用时,它将明智地将其转换为 in_id 组。在 sum 函数将在组内求和 value。并且选择函数将选择总和的in_idvalue。作为回报,您只会得到 in_id 和 in_id 的总和 :)
  • can this work with out Raw query 是的,它会的。使用->selectRaw('sum(value) as sum, in_id')
猜你喜欢
  • 2016-05-12
  • 1970-01-01
  • 2018-08-02
  • 1970-01-01
  • 2011-01-02
  • 2017-03-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多