根据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

查询结果如下:

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

 

 

 

 

 

posted @ 2021-06-23 15:41  harara  阅读(443)  评论(0编辑  收藏  举报