SQL如何将同列不同枚举值分组统计后展示为独立列
多状态反馈量分列统计SQL实现方案
你需要使用条件聚合语法实现需求,也就是将聚合函数和条件判断结合,分别统计对应状态的数量,修改后的SQL如下:
SELECT company 公司名称, COUNT(CASE WHEN `Company Response to Consumer` = 'Closed' THEN 1 END) Closed状态反馈数量, COUNT(CASE WHEN `Company Response to Consumer` = 'Closed with explanation' THEN 1 END) Closed_with_explanation状态反馈数量, COUNT(CASE WHEN `Company Response to Consumer` = 'Closed with non-monetary relief' THEN 1 END) Closed_with_non_monetary_relief状态反馈数量 FROM consumercomplaints WHERE `Company Response to Consumer` IN ('Closed', 'Closed with explanation', 'Closed with non-monetary relief') GROUP BY company
实现逻辑说明
- 每段
COUNT(CASE ... END)负责统计对应状态的数量:当反馈结果匹配对应状态时返回非空值,不匹配则返回NULL,COUNT函数只会统计非空值,因此可以精准得到对应状态的反馈量 - 原SQL的WHERE过滤条件可以保留,排除非目标枚举值的无效数据,提升查询效率
- 如果你使用的数据库支持
IF函数,也可以将CASE WHEN替换为更简洁的IF写法,比如COUNT(IF(Company Response to Consumer= 'Closed', 1, NULL)),执行效果完全一致
内容的提问来源于stack exchange,提问作者Yustina Yasin
相关产品推荐
相关产品推荐

