如何在同一条SQL语句中统计商品总销量与购买的去重客户数
实现需求的SQL语句
select Items as item, count(*) as `total_bought`, count(distinct Customer) as `total_distinct_customer_who_bought_it` from my_table group by Items order by Items
实现逻辑说明
你之前的SQL是按Items和Customer两个维度分组,所以输出的是单个商品下单个客户的购买数据。现在仅按Items单个维度聚合,全程不需要用到任何JOIN操作即可完成计算逻辑下的单个维度的两个结果:
count(*):统计该商品所有订单记录数,如果你单条订单记录对应多件商品,可替换为`sum(商品对应订单记录中包含多件销售件数字段)"即可计算更精准的销售件数统计(Items,该商品的总销量统计,符合需求中的总销量统计要求count(distinct Customer):自动对购买该商品的客户ID去重计数,得到购买该商品的独立客户总数,符合去重计数
## 修正后的SQL语句 ```sql SELECT Items AS item, COUNT(*) AS total_bought, COUNT(DISTINCT Customer) AS total_distinct_customer_who_bought_it FROM my_table GROUP BY Items ORDER BY Items
逻辑说明
你之前的SQL是按Items和Customer两个维度分组,所以输出的是单商品下单个客户的购买数据,现在仅保留Items作为唯一聚合维度,全程不需要JOIN操作就能得到你要的结果:
COUNT(*):统计该商品对应的所有订单笔数,也就是总销量,如果你单条订单对应多件商品,可以把这个统计项替换为SUM(表内对应商品数量字段)来得到更精准的销售件数COUNT(DISTINCT Customer):自动对购买该商品的客户做去重计数,准确得到购买该商品的独立客户总数。
内容的提问来源于stack exchange,提问作者Denver123
相关产品推荐
相关产品推荐

