📅  最后修改于: 2023-12-03 14:43:45.979000             🧑  作者: Mango
在Laravel中,SUM和GROUP BY是常用的SQL聚合函数和子句。使用它们可以方便地对数据库表中的数据进行统计和分组。本文将介绍如何在Laravel中使用SUM和GROUP BY。
SUM
函数用于计算某列的总和。可以使用Eloquent查询构建器或原生SQL语句来使用该函数。
使用Eloquent查询构建器,可以使用sum
方法来计算某列的总和。例如:
$total = DB::table('users')->where('active', true)->sum('points');
该代码将从users
表中选择所有active
为true
的记录,并计算它们的points
列的总和。
使用原生SQL语句,可以使用SELECT SUM
语句来计算某列的总和。例如:
$total = DB::select('SELECT SUM(points) as total_points FROM users WHERE active = ?', [true])[0]->total_points;
该代码将从users
表中选择所有active
为true
的记录,并计算它们的points
列的总和。注意,我们在查询中使用了AS
关键字来指定计算结果的别名。
GROUP BY
子句用于将结果集分组为多个子集,每个子集都具有相同的值(通常是某个列上的值)。可以使用Eloquent查询构建器或原生SQL语句来使用该子句。
使用Eloquent查询构建器,可以使用groupBy
方法来指定分组。例如:
$totals = DB::table('users')->select('status', DB::raw('SUM(points) as total_points'))->groupBy('status')->get();
该代码将从users
表中选择所有记录,并按status
列进行分组。对于每个分组,我们使用SUM
函数来计算points
列的总和,并将其指定为total_points
列。最后,我们使用get
方法来获取所有分组的结果。
使用原生SQL语句,可以使用GROUP BY
语句来指定分组。例如:
$totals = DB::select('SELECT status, SUM(points) as total_points FROM users GROUP BY status');
该代码将从users
表中选择所有记录,并按status
列进行分组。对于每个分组,我们使用SUM
函数来计算points
列的总和,并将其指定为total_points
列。
SUM和GROUP BY是Laravel中常用的SQL聚合函数和子句。使用它们可以方便地对数据库表中的数据进行统计和分组。无论是使用Eloquent查询构建器还是原生SQL语句,都可以轻松使用它们。