按user_id统计所有行中yes总数的技术实现需求
按user_id分组统计指定列的"yes"总数
输入数据
| id | user_id | eligible | asset | requirement |
|---|---|---|---|---|
| 1 | 1 | yes | no | yes |
| 2 | 1 | yes | yes | yes |
| 3 | 2 | no | yes | no |
预期结果
| user_id | yes_count |
|---|---|
| 1 | 5 |
| 2 | 1 |
解决方案(SQL实现)
核心思路是将每一行的eligible、asset、requirement列中"yes"转换为1,"no"转换为0,逐行求和后再按user_id分组汇总总数。
通用SQL写法(兼容多数数据库)
SELECT user_id, SUM( CASE WHEN eligible = 'yes' THEN 1 ELSE 0 END + CASE WHEN asset = 'yes' THEN 1 ELSE 0 END + CASE WHEN requirement = 'yes' THEN 1 ELSE 0 END ) AS yes_count FROM your_table_name GROUP BY user_id;
MySQL简化写法
利用IF函数简化条件判断:
SELECT user_id, SUM( IF(eligible = 'yes', 1, 0) + IF(asset = 'yes', 1, 0) + IF(requirement = 'yes', 1, 0) ) AS yes_count FROM your_table_name GROUP BY user_id;
内容的提问来源于stack exchange,提问作者Mohd Danish Tahir
相关产品推荐
相关产品推荐

