SQL查询需求:按Box ID分组判断Match列是否存在No值
按Box分组判断Match列是否全为'yes'的SQL解决方案
没问题,这个需求用基础的SQL聚合函数就能轻松实现,我给你两种常用的思路,适配MySQL、PostgreSQL、SQL Server等绝大多数关系型数据库:
方法一:利用字符串字典序的极简写法
利用MIN()函数的特性——字符串比较时'no'的字典序小于'yes',所以只要分组里存在至少一个'no',取最小值就会得到'no',只有全是'yes'时才返回'yes':
SELECT Box, MIN(Match) AS Group_Match_Result FROM your_table_name GROUP BY Box;
方法二:直观的条件判断写法
如果觉得上面的写法不够直观,也可以用CASE语句配合计数逻辑,明确判断分组内是否存在'no':
SELECT Box, CASE -- 统计分组中Match为'no'的数量,大于0则返回'no' WHEN COUNT(CASE WHEN Match = 'no' THEN 1 END) > 0 THEN 'no' ELSE 'yes' END AS Group_Match_Result FROM your_table_name GROUP BY Box;
测试结果(基于你的样本数据)
运行上述任意一段SQL,都会得到如下结果:
| Box | Group_Match_Result |
|---|---|
| Box100 | yes |
| Box200 | no |
内容的提问来源于stack exchange,提问作者ChrisYYC
相关产品推荐
相关产品推荐

