假设我有一个充满用户的数据库。并且一个表填充了“点”用户为各种活动所获得的点数表包含以下列:
id,user_id,value,created_at,updated_at
我希望能够使用 - > sum()方法获得用户的总积分,然后将该用户的总积分与普通用户的总积分进行比较。
我知道我可以通过以下方式获得每个用户总积分的集合:
->groupBy('user_id')->selectRaw( "sum( value ) as sum" )->pluck( "sum" );
但是我想知道如何获得所有用户的平均总分,而不是每个用户的总分数。
谢谢!
答案 0 :(得分:2)
使用laravel,您可以使用sum()
方法汇总集合中的值,使用count()
方法计算集合中的数字元素。总和/计数是平均值:
$sums=$whatever->groupBy('user_id')->selectRaw( "sum( value ) as sum" )->get( "sum" );
$avg=$sums->sum("sum")/$sums->count();
或者您需要在sql代码中使用子查询。