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

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

Laravel
表数据
Laravel

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

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《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();
3年前 评论
zz_lkw (楼主) 3年前
zz_lkw (楼主) 3年前
讨论数量: 5

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

3年前 评论
$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();
3年前 评论
zz_lkw (楼主) 3年前
zz_lkw (楼主) 3年前

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