如何从SQL查询结果中筛选出最少使用的支付方式?
解决最少使用支付方式的SQL查询问题
你的子查询报错原因是:使用聚合函数MIN(Occ)时,Payment列既未被包含在GROUP BY子句中,也未被聚合函数处理,违反了SQL的聚合规则。
以下是两种可行的解决方案:
方法一:排序后取第一条
直接统计各支付方式的使用次数,按次数升序排序后取第一条记录:
SELECT Payment, COUNT(Payment) AS Frequency FROM SALES GROUP BY Payment ORDER BY Frequency ASC LIMIT 1;
这种方式简单高效,适合只需要单个最少使用支付方式的场景。
方法二:匹配最小使用次数
先通过子查询获取所有支付方式中的最小使用次数,再筛选出对应支付方式:
SELECT Payment, COUNT(Payment) AS Frequency FROM SALES GROUP BY Payment HAVING COUNT(Payment) = ( SELECT MIN(Occ) FROM ( SELECT COUNT(Payment) AS Occ FROM SALES GROUP BY Payment ) AS SubQuery );
如果存在多个支付方式使用次数相同且均为最小值,该方法会返回所有符合条件的记录。
以上两种方法都能得到你期望的Paypal | 123的结果。
内容的提问来源于stack exchange,提问作者user20443347
相关产品推荐
相关产品推荐

