MySQL求助:统计Field B为yes的各名称出现次数
解决方案:统计MySQL表中各颜色对应Field B为"yes"的数量
没问题,这就是个典型的分组统计需求,咱们用MySQL的分组查询+聚合函数就能轻松搞定。先理清楚你的需求:按Field A的不同取值,统计对应的Field B为yes的记录条数,最终得到每个颜色的yes次数。
你的原始数据
| Field A | Field B |
|---|---|
| Red | yes |
| Blue | yes |
| Red | no |
| Green | no |
| Blue | yes |
| Blue | yes |
| Green | no |
| Green | yes |
| Red | no |
实现SQL语句
这里给你两种常用的写法,都能达到目标,你可以根据习惯选择:
写法1:CASE表达式配合SUM统计
SELECT `Field A`, SUM(CASE WHEN `Field B` = 'yes' THEN 1 ELSE 0 END) AS yes_count FROM your_table_name -- 替换成你实际的表名 GROUP BY `Field A`;
写法2:COUNT过滤非yes记录
SELECT `Field A`, COUNT(CASE WHEN `Field B` = 'yes' THEN 1 END) AS yes_count FROM your_table_name -- 替换成你实际的表名 GROUP BY `Field A`;
匹配你要的输出格式
如果想要完全和你给出的输出样式一致(没有表头,颜色和数字直接在一行),可以用CONCAT拼接结果:
SELECT CONCAT(`Field A`, ' ', SUM(CASE WHEN `Field B` = 'yes' THEN 1 ELSE 0 END)) AS result FROM your_table_name GROUP BY `Field A`;
执行后就会输出:
Red 1 Blue 3 Green 1
内容的提问来源于stack exchange,提问作者Dr.Faisal




