zoukankan      html  css  js  c++  java
  • 根据group by、count case when 分组分类统计

    应用场景:

    页面展示的模板审核状态的规则如下:

    待提交:sub_status为 未提交
    
    审核通过:至少1个素材审核通过
    
    审核不通过:素材全部审核不通过
    
    审核中:其他

    通过sql语句查询出页面展示的模板审核状态

    表:

    CREATE TABLE TPL_MEDIA_AUDIT(
    ID INT PRIMARY KEY auto_increment,
    TEMP_ID INT NOT NULL DEFAULT 0 comment '素材所属模板id',
    MEDIA_ID INT NOT NULL DEFAULT 0 comment '素材id',
    SUB_STATUS INT NOT NULL DEFAULT 0 comment '0-未提交  1-已提交',
    AUDIT_STATUS INT NOT NULL DEFAULT 0 comment '0 审核中  1素材审核成功 2素材审核不通过  ',
    CREATE_TIME DATETIME DEFAULT NOW(),
    UPDATE_TIME DATETIME DEFAULT NOW()
    );

    说明:一个模板包含一个或多个素材,提交模板后,将提交状态改为已提交。程序将模板中的素材提交审核平台,审核完成后更新表的素材审核状态。

    表中的数据:

    insert into TPL_MEDIA_AUDIT(temp_id,media_id,sub_status,audit_status) values(1001,100101,0,0);
    insert into TPL_MEDIA_AUDIT(temp_id,media_id,sub_status,audit_status) values(1001,100102,0,0);
    insert into TPL_MEDIA_AUDIT(temp_id,media_id,sub_status,audit_status) values(1002,100201,1,1);
    insert into TPL_MEDIA_AUDIT(temp_id,media_id,sub_status,audit_status) values(1002,100202,1,0);
    insert into TPL_MEDIA_AUDIT(temp_id,media_id,sub_status,audit_status) values(1002,100203,1,0);
    insert into TPL_MEDIA_AUDIT(temp_id,media_id,sub_status,audit_status) values(1003,100301,1,1);
    insert into TPL_MEDIA_AUDIT(temp_id,media_id,sub_status,audit_status) values(1003,100302,1,1);
    insert into TPL_MEDIA_AUDIT(temp_id,media_id,sub_status,audit_status) values(1003,100303,1,2);
    insert into TPL_MEDIA_AUDIT(temp_id,media_id,sub_status,audit_status) values(1004,100401,1,2);
    insert into TPL_MEDIA_AUDIT(temp_id,media_id,sub_status,audit_status) values(1004,100402,1,2);
    insert into TPL_MEDIA_AUDIT(temp_id,media_id,sub_status,audit_status) values(1004,100403,1,2);

     

    根据group by 、count (case when)分组分类查询,sql语句如下

    select media.TEMP_ID,
    CASE WHEN media.toSubmitCount > 0 THEN '待提交'
      WHEN media.approvedCount > 0 THEN '审核通过'
      WHEN media.noapprovedCount = media.total THEN '审核不通过'  
      else '审核中'END state
    from   
    (
    select TEMP_ID,
    count(*) total, -- 总条数
    count(CASE WHEN SUB_STATUS = 0 THEN '0' END) toSubmitCount, -- 待提交的条数
    count(CASE WHEN AUDIT_STATUS = 0 THEN '0'END) toapproveCount, -- 审核中的条数
    count(CASE WHEN AUDIT_STATUS = 1 THEN '0'END) approvedCount, -- 审核通过的条数
    count(CASE WHEN AUDIT_STATUS = 2 THEN '0'END) noapprovedCount -- 审核不通过的条数
    from TPL_MEDIA_AUDIT
    group by TEMP_ID -- 根据tmpl_id分组
    ) media

    查询结果如下:

     加查询条件:审核状态为”待提交”,查询结果如下:

     

     

    作者:小念
    本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    转:wcf大文件传输解决之道(1)
    转:WCF传送二进制流数据基本实现步骤详解
    创建一个简单的WCF程序2——手动开启/关闭WCF服务与动态调用WCF地址
    创建一个简单的WCF程序
    转:【专题十二】实现一个简单的FTP服务器
    转:【专题十一】实现一个基于FTP协议的程序——文件上传下载器
    转:【专题十】实现简单的邮件收发器
    转:【专题九】实现类似QQ的即时通信程序
    转:【专题八】P2P编程
    转:【专题七】UDP编程补充——UDP广播程序的实现
  • 原文地址:https://www.cnblogs.com/kiko2014551511/p/14923001.html
Copyright © 2011-2022 走看看