如何用雄辩的幼虫将结果分为多个条件亚组?

时间:2019-02-04 11:32:03

标签: laravel eloquent

我有一个产品表,我试图雄辩地进行查询,根据情况将结果分为五个子组。 每个子组将显示满足此条件的总行数。

DB::table(Product::TABLE_NAME)->select(
    DB::raw("prize"),
    DB::raw("count(*) as total")
)
->groupBy('prize')->get();

我不知道条件在哪里。

我希望此输出:

id_group | total |
------------------
1        | 34    |
2        | 46    |
3        | 126   |

id_group代表每个条件:

1 - prize = null
2 - prize = 0
3 - prize > 0

解决方案我已经知道了,但是我不知道这是更有效的方法还是其他可行的方法:

DB::table(Product::TABLE_NAME)->select(
    DB::raw("SUM(CASE
        WHEN prize IS NULL THEN 1 ELSE 0 END) AS 1"),
    DB::raw("SUM(CASE
        WHEN prize = 0 THEN 1 ELSE 0 END) AS 2"),
    DB::raw("SUM(CASE
        WHEN prize > 0 THEN 1 ELSE 0 END) AS 3")
)->get();

0 个答案:

没有答案