我需要得到每行中两列的差之和[关闭]

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);

【讨论】:

以上是关于我需要得到每行中两列的差之和[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

用LINQ将select中两列的结果合并到一个数组中?

如何检索表的值以获取sql中两列的最大值

在不使用第三个变量或表的情况下交换表中两列的值

将函数应用于 Pandas.DataFrame 中两列的每个组合的更好方法

pyspark数据框中两列之间的时间差

查找 MySQL 数据库中两列组合的重复项