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

如何使用SQL按客户到店次数分组统计对应客群的平均消费金额

实现方案

你已经完成了单客户维度的到店次数、总消费统计,接下来只需要对这个结果做分档聚合即可,两步走:

  • 第一步:给单客户统计结果加「到店次数分组」标签,用CASE WHEN判断到店次数的数值,分别归为1次/2次/3次及以上
  • 第二步:按「到店次数分组」聚合,计算组内所有客户总消费的平均值

具体SQL实现(CTE写法,可读性更高)

WITH client_stat AS (
    -- 复用你已有的单客户统计逻辑,补充字段别名方便后续调用
    SELECT 
        ID_Client, 
        SUM(money_spent) AS total_spent,
        COUNT(DISTINCT `Date`) AS visit_times
    FROM Services_Data sd
    GROUP BY ID_Client
)
SELECT 
    -- 到店次数分档逻辑
    CASE 
        WHEN visit_times = 1 THEN '1次'
        WHEN visit_times = 2 THEN '2次'
        ELSE '3次及以上'
    END AS visit_group,
    -- 计算对应客群的平均总消费
    AVG(total_spent) AS avg_spent_per_group
FROM client_stat
GROUP BY visit_group;

如果你的数据库不支持CTE(比如低版本MySQL),可以替换为子查询写法:

SELECT 
    CASE 
        WHEN visit_times = 1 THEN '1次'
        WHEN visit_times = 2 THEN '2次'
        ELSE '3次及以上'
    END AS visit_group,
    AVG(total_spent) AS avg_spent_per_group
FROM (
    SELECT 
        ID_Client, 
        SUM(money_spent) AS total_spent,
        COUNT(DISTINCT `Date`) AS visit_times
    FROM Services_Data sd
    GROUP BY ID_Client
) AS client_stat
GROUP BY visit_group;

补充说明

如果你需要统计的是对应客群的单次到店平均消费,而非单客总消费的平均值,只需要把上述代码中的AVG(total_spent)替换为AVG(total_spent / visit_times)即可。


内容的提问来源于stack exchange,提问作者Gabriele Jack Gervasi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:06:01