SQL如何按source分组统计各status对应的申请数量
SQL分组统计实现方案
该需求完全可以在SQL中实现,你现有语句的问题是仅按status维度分组,没有加入source维度,因此只能返回全量指定source的状态总计数,调整分组逻辑即可得到所需结果,以下是两种常用实现方案:
方案1:行式分组统计
输出结果为每个source+status组合对应一行,适合后续对数据做二次加工处理:
SELECT source, status, count(id) AS apply_count FROM myTable WHERE source IN ('BB5','GGG','FEV') GROUP BY source, status ORDER BY source, status;
这里使用
count(id)统计更准确,id是唯一非空标识,统计结果不会受status字段空值干扰。
方案2:透视表统计
输出结果为每个source对应一行,各状态申请量作为单独列展示,适合直接作为报表查看:
SELECT source, SUM(CASE WHEN status = 'A' THEN 1 ELSE 0 END) AS accepted_count, SUM(CASE WHEN status = 'R' THEN 1 ELSE 0 END) AS rejected_count, SUM(CASE WHEN status = 'P' THEN 1 ELSE 0 END) AS pended_count, COUNT(id) AS total_apply_count FROM myTable WHERE source IN ('BB5','GGG','FEV') GROUP BY source ORDER BY source;
内容的提问来源于stack exchange,提问作者fsdff
相关产品推荐
相关产品推荐

