我需要得到每行中两列的差之和[关闭]
Posted
技术标签:
【中文标题】我需要得到每行中两列的差之和[关闭]【英文标题】:I need to get sum of difference of two columns in each row [closed] 【发布时间】:2020-01-15 22:12:14 【问题描述】:我有一个叫做sales的表,有100行,表有2个字段,即total和commission,我想把所有行的SUM(total-commission)变成一个值
【问题讨论】:
您尝试了哪些方法,但为什么没有在您之后得到结果? ***.com/questions/25077898/… Difference between two columns in mysql的可能重复 【参考方案1】:-
您可以使用 Eloquent Builder
sum()
函数。
$sum = Sale::select(
DB::raw('commissioned_total as total - commission')
)
->sum('commissioned_total');
-
或者你可以使用 Laravel Collection
sum()
函数。
$sum = Sale::all()->sum(function($sale)
return $sale->total - $sale->commission;
);
-
您可以进一步增强此方法,
在Sale
模型上定义这个commissionedTotal()
函数,并将sum函数用作高阶消息。
销售模式
public function commissionedTotal()
return $this->total - $this->commission;
控制器
$sum = Sale::all()->sum->commissionedTotal()
第三种方法更优雅,是 Laravel 首选的方法。
【讨论】:
在类似情况下使用方法 2),我收到以下错误ErrorException : stripos() expects parameter 1 to be string, object given.
似乎 sum 中的函数不接受对象作为参数【参考方案2】:
根据您的问题,示例查询可能只有两个字段:
SELECT SUM(s.total-s.commission) as myResult from sales as s WITH (NOLOCK);
【讨论】:
以上是关于我需要得到每行中两列的差之和[关闭]的主要内容,如果未能解决你的问题,请参考以下文章