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

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

Laravel
表数据
Laravel

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

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 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年前

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