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

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

Laravel
表数据
Laravel

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

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
最佳答案
$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年前

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