You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计仅包含指定编码XXX的唯一订单总数量

问题原因排查

你当前的SQL逻辑存在疏漏:执行WHERE item_code = 'XXX'时已经提前过滤掉了所有非XXX的商品行,导致SQL无法识别同一个订单是否还包含其他编码的商品,自然会把同时存在XXX和其他商品的订单(比如示例中的123)也统计进来,不符合需求。

正确实现方案

核心逻辑是**按订单分组后,判断该订单是否同时满足「没有非XXX的商品」+「至少存在1个XXX商品」**两个条件。
如果需要先查看所有符合条件的订单ID,语句如下:

SELECT order_id
FROM table_a
GROUP BY order_id
HAVING 
  -- 订单内不存在任何非XXX的商品
  COUNT(CASE WHEN `item code` != 'XXX' THEN 1 END) = 0
  -- 订单内至少有一个XXX商品,排除完全没有XXX的订单
  AND COUNT(CASE WHEN `item code` = 'XXX' THEN 1 END) > 0;

如果需要直接得到最终统计的总数,直接在外层套COUNT即可:

SELECT COUNT(*) AS valid_order_total
FROM (
  SELECT order_id
  FROM table_a
  GROUP BY order_id
  HAVING 
    COUNT(CASE WHEN `item code` != 'XXX' THEN 1 END) = 0
    AND COUNT(CASE WHEN `item code` = 'XXX' THEN 1 END) > 0
) t;

结果验证

针对你提供的示例数据,上述语句会筛选出订单456、789,最终统计结果为2,完全符合预期。

注:如果你的字段名是带空格的item code,需要用反引号包裹,避免语法报错,建议后续规范字段名使用下划线分隔(如item_code)。

内容的提问来源于stack exchange,提问作者datanerd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 23:18:02