求客户购物的独特店铺数量平均值的SQL查询求助
解决客户独特购物店铺数量平均值的SQL写法
你当前的SQL存在冗余且没完成需求:按CLIENT NUMBER分组后,count(distinct CLIENT NUMBER)的结果每个分组都是1,完全没必要保留;而且你只算出了每个客户对应的独特店铺数,没对这些数值求平均值。
正确的写法是先统计每个客户的独特店铺数量,再对这些统计值取平均:
SELECT AVG(unique_retailers) AS avg_unique_retailers_per_client FROM ( SELECT CLIENT_NUMBER, COUNT(DISTINCT RETAILER) AS unique_retailers FROM TRANSACTIONS GROUP BY CLIENT_NUMBER ) AS client_retailer_counts
逻辑说明:
- 内层子查询:按客户编号分组,统计每个客户去过的独特店铺数量,结果集是每个客户对应的店铺数。
- 外层查询:对所有客户的独特店铺数计算平均值,得到最终需要的结果。
内容的提问来源于stack exchange,提问作者Kokopas
相关产品推荐
相关产品推荐

