如何统计仅含单一Product category的Order numbers的Distinct count?
解决思路
核心逻辑
要统计仅含单一产品类别的订单数,关键是先识别每个订单对应的唯一产品类别数量,再筛选出数量为1的订单,最后统计这类订单的总数。
方法一:分组统计后筛选
先按订单号分组,计算每个订单下的唯一产品类别数,再只保留类别数为1的订单,最后统计这些订单的数量。
示例SQL:
SELECT COUNT(DISTINCT Order_number) AS single_category_order_count FROM ( SELECT Order_number, COUNT(DISTINCT Product_category) AS category_count FROM your_business_table GROUP BY Order_number HAVING category_count = 1 ) AS filtered_orders;
方法二:反向排除多类别订单
先找出所有包含多种产品类别的订单,再从总订单中排除这些订单,剩下的就是符合要求的订单,统计其数量。
示例SQL:
SELECT COUNT(DISTINCT Order_number) AS single_category_order_count FROM your_business_table WHERE Order_number NOT IN ( SELECT Order_number FROM your_business_table GROUP BY Order_number HAVING COUNT(DISTINCT Product_category) > 1 );
注意点
- 把
your_business_table替换成你实际使用的业务表名称。 - 如果
Product_category字段存在空值,根据业务需求决定是否在查询中加入WHERE Product_category IS NOT NULL来排除空值记录。 - 确保字段名(比如
Order_number、Product_category)和你表中的实际字段名完全一致,避免拼写错误导致查询失败。
内容的提问来源于stack exchange,提问作者Vlad Veigang
相关产品推荐
相关产品推荐

