请教一个sql统计的问题,怎么才能查出想要的结果?

希望得到的数据
Laravel
数据库设计如下

Laravel
表数据
Laravel

备注:mid对应用户一张表,admin_id对应客服人员一张表,请问有什么sql可以查询吗

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案
$data = TableName::where("type",1)
        ->groupBy("admin_id")
        ->select([
            "admin_id",
            DB::raw("count(*) as num_all"),
            DB::raw("sum(if(status=0,1,0)) as 删除"),
            DB::raw("sum(if(status=1,1,0)) as 完成"),
            DB::raw("sum(if(status=2,1,0)) as 未完成"),
            DB::raw("sum(if(status=3,1,0)) as 逾期已完成"),
            DB::raw("sum(if(status=4,1,0)) as 逾期未完成"),
        ])->paginate(10)->toArray();
2年前 评论
zz_lkw (楼主) 2年前
zz_lkw (楼主) 2年前
讨论数量: 5

可以用withCount,但是有点耗性能,不如在用户表维护添加这几个类型的字段来维护这些数据。或者建立一张表维护,嫌麻烦也可以在详情页显示这些统计数据;

2年前 评论
$data = TableName::where("type",1)
        ->groupBy("admin_id")
        ->select([
            "admin_id",
            DB::raw("count(*) as num_all"),
            DB::raw("sum(if(status=0,1,0)) as 删除"),
            DB::raw("sum(if(status=1,1,0)) as 完成"),
            DB::raw("sum(if(status=2,1,0)) as 未完成"),
            DB::raw("sum(if(status=3,1,0)) as 逾期已完成"),
            DB::raw("sum(if(status=4,1,0)) as 逾期未完成"),
        ])->paginate(10)->toArray();
2年前 评论
zz_lkw (楼主) 2年前
zz_lkw (楼主) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!