如何实现带条件的distinct计数并判断商品是否有同集群其他门店
SQL实现方案
你可以基于原有统计逻辑,先计算每个product+cluster分组的门店数,再按product维度聚合判断即可,参考代码如下:
WITH cluster_shop_stats AS ( -- 原有统计逻辑:计算每个产品、集群对应的门店数 SELECT product, cluster, COUNT(DISTINCT shop_id) AS shops FROM a WHERE site = 1 GROUP BY product, cluster ) SELECT product, CASE WHEN MAX(shops) > 1 THEN 'Yes' ELSE 'No' END AS other_shops FROM cluster_shop_stats GROUP BY product;
逻辑说明
- 内层CTE
cluster_shop_stats复用了你已有的统计逻辑,先得到每个产品对应每个集群下的门店数量 - 外层按product维度聚合,只要该产品下存在任意一个集群的门店数大于1,聚合函数
MAX(shops)的结果就会大于1,此时返回Yes;如果该产品所有集群的门店数都小于等于1,则返回No,和你要求的输出格式完全匹配。
内容的提问来源于stack exchange,提问作者datazang
相关产品推荐
相关产品推荐

