📜  sql select sum group by id laravel - SQL (1)

📅  最后修改于: 2023-12-03 15:20:14.686000             🧑  作者: Mango

SQL中的GROUP BY与SUM

在Laravel中,我们经常需要使用SQL语句对数据进行查询、过滤和统计。其中,GROUP BY与SUM是两个非常常用的关键词。通过GROUP BY,我们可以将数据按照指定的一列或多列分组,然后通过SUM等统计函数对分组后的数据进行计算。

例如,我们有一个sales表,其中包含商品id、销售日期和销售额三个字段。要统计每个商品的销售总额,可以使用以下SQL语句:

SELECT id, SUM(sales_amount) AS total_sales_amount
FROM sales
GROUP BY id

以上语句会将sales表按照id列进行分组,然后对每个分组内的sales_amount列求和,最后返回每个组的id和总销售额。在Laravel中,我们可以使用DB门面来执行这个查询:

$results = DB::table('sales')
                ->select('id', DB::raw('SUM(sales_amount) AS total_sales_amount'))
                ->groupBy('id')
                ->get();

其中,DB::raw()方法用于包装原始的SQL语句,以便在select方法中使用SUM函数;groupBy方法用于指定GROUP BY的列;get方法则会执行查询并返回结果集。

另外,在Laravel 5.5及以上版本中,我们可以使用Eloquent ORM来执行与以上SQL语句等价的查询:

$results = Sale::select('id', DB::raw('SUM(sales_amount) AS total_sales_amount'))
                ->groupBy('id')
                ->get();

其中,Sale为对应的模型,其内部使用了与DB门面等价的SQL生成器。在Eloquent中,我们可以使用更直观的面向对象方式来描述查询,从而提高代码可读性。

总之,GROUP BY与SUM是SQL中非常常用的关键词,在Laravel中也是不可或缺的。我们可以通过DB门面或Eloquent ORM来执行这样的查询,以便对数据进行聚合、统计、过滤等操作。