SELECT SUM(CASE WHEN status='A' THEN 1 ELSE 0 END) AS count_a, SUM(CASE WHEN status='B' THEN 1 ELSE 0 END) AS count_b, SUM(CASE WHEN status='C' THEN 1 ELSE 0 END) AS count_c FROM table_name;用laravel的orm来实现一下
时间: 2024-01-28 15:02:45 浏览: 122
Laravel 对某一列进行筛选然后求和sum()的例子
可以使用 Laravel 的 Eloquent ORM 的聚合函数和条件查询来实现这个查询。具体实现如下:
```
$result = DB::table('table_name')
->select(DB::raw('SUM(CASE WHEN status="A" THEN 1 ELSE 0 END) AS count_a'),
DB::raw('SUM(CASE WHEN status="B" THEN 1 ELSE 0 END) AS count_b'),
DB::raw('SUM(CASE WHEN status="C" THEN 1 ELSE 0 END) AS count_c'))
->get();
```
在这个查询中,使用了 `DB::table()` 方法来创建一个查询构建器,然后使用 `select()` 方法来指定查询的列。在这里,我们使用了 `DB::raw()` 方法来指定原始的 SQL 表达式,用于实现 CASE WHEN 条件查询和 SUM 聚合函数。最后使用 `get()` 方法来执行查询,并返回查询结果。
执行查询后,可以通过 `$result` 变量来获取查询结果,例如:
```
$count_a = $result[0]->count_a;
$count_b = $result[0]->count_b;
$count_c = $result[0]->count_c;
```
这样就可以分别获取三个不同状态的记录数了。
阅读全文