📜  laravel sum group by - PHP (1)

📅  最后修改于: 2023-12-03 14:43:45.979000             🧑  作者: Mango

Laravel中的SUM和GROUP BY

在Laravel中,SUM和GROUP BY是常用的SQL聚合函数和子句。使用它们可以方便地对数据库表中的数据进行统计和分组。本文将介绍如何在Laravel中使用SUM和GROUP BY。

使用SUM

SUM函数用于计算某列的总和。可以使用Eloquent查询构建器或原生SQL语句来使用该函数。

Eloquent查询构建器

使用Eloquent查询构建器,可以使用sum方法来计算某列的总和。例如:

$total = DB::table('users')->where('active', true)->sum('points');

该代码将从users表中选择所有activetrue的记录,并计算它们的points列的总和。

原生SQL语句

使用原生SQL语句,可以使用SELECT SUM语句来计算某列的总和。例如:

$total = DB::select('SELECT SUM(points) as total_points FROM users WHERE active = ?', [true])[0]->total_points;

该代码将从users表中选择所有activetrue的记录,并计算它们的points列的总和。注意,我们在查询中使用了AS关键字来指定计算结果的别名。

使用GROUP BY

GROUP BY子句用于将结果集分组为多个子集,每个子集都具有相同的值(通常是某个列上的值)。可以使用Eloquent查询构建器或原生SQL语句来使用该子句。

Eloquent查询构建器

使用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语句

使用原生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语句,都可以轻松使用它们。