用户分群-RFM模型(SQL版)

项目背景

随着用户量级的增长,用户消费行为呈现分化,而现有统一发券、统一开展活动的转化率低、成本高。为了实现精细化用户运营,需要建立一套可量化、可执行的用户分层体系,对不同价值的用户提供差异化服务与营销策略。

业务目标

用户分群:明确区分高价值用户、潜力用户、流失风险用户。

差异化营销:支撑优惠券、Push、客服优先级差异化配置,为流失预警、人群运营提供基础标签。

业务目标:提升营销ROI、提升复购率和GMV。

运营策略

|--------|-----------|--------------|
| 分群 | RFM特征 | 运营动作 |
| 重要价值客户 | R↑F↑M↑ | VIP专线,新品优先体验 |
| 重要保持客户 | R↓F↑M↑ | 大额券、情感关怀 |
| 重要深耕客户 | R↑F↓M↑ | 跨品种推荐、捆绑销售 |
| 新客户 | R↑F↓M↓ | 首单返券、新手任务 |
| 一般客户 | R↓F↑M↓ | 低成本召回 |
| 流失客户 | R↓F↓M↓ | 低成本召回、暂停投入 |

**重要价值客户:**是平台的"金主",贡献了大部分利润,而且粘性高。他们追求尊贵感,如果给"满减券"反而掉价,提供"VIP专线"或大客户运营是为了提高服务体验,"新品优先体验"则满足了身份的象征。

**重要保持客户:**这类用户曾经很活跃、消费多,但最近没来,可能对平台有所不满或被竞品吸引。如果流失对平台造成的损失很大,所以需要强利益刺激作为"钩子"强行拉回。这是ROI最高的人群,值得花大成本去挽回。

**重要深耕客户:**最近消费额高,但购买频率不高。这类用户是认可平台的品质的,但需求可能没有被充分挖掘。他们有消费能力,可以通过跨品类推荐和捆绑销售来挖掘潜在需求,把一次性大消费转化为高频多品类消费。

**新客户:**最近才开始购买,对平台还在试用期。提供优惠券或首单返券是为了降低购买门槛;新手任务是为了引导用户熟悉平台功能,发现平台的核心用户价值,完成从"访客"到"活跃用户"的转化。

**一般客户&流失客户:**很久没来也没花过什么钱,属于边缘用户,对这部分用户投入高昂的营销费用是比较浪费的,如果召回的的成本是比较低的Push或短信,可以试一试。

实施流程

① 明确项目目标

② 确定统计周期 & 用户范围

③ 数据提取(订单事实表)

④ RFM 指标计算

⑤ RFM 打分(1--5分)

⑥ 用户分群映射

⑦ 分群验证 & 业务命名

⑧ 标签写入用户画像 / CDP

⑨ 运营策略落地

⑩ 效果复盘 & 周期性重算

SQL代码

表结构:order_info表名

|---------------|---------------|------------------------------|
| 字段名 | 字段类型 | 备注 |
| order_id | bigint | 订单号 |
| user_id | bigint | 用户id |
| order_date | date | 订单日期 |
| pay_time | datetime | 支付时间 |
| order_status | string | 订单状态(如:待支付、已支付、已完成、已取消、已退款等) |
| pay_amount | decimal(10,2) | 实付金额 |
| refund_amount | decimal(10,2) | 退款金额 |

sql 复制代码
-- 计算RFM

with order_count as ( -- 以用户id为维度的中间表
select 
    user_id,
    datediff(current_date(),max(order_date)) as R,
    count(distinct order_id) as F,
    sum(pay_amount-coalesce(refund_amount,0)) as M
from order_info
where order_status = 'success'
    and order_date>= date_sub(current_date,365)
group by user_id
)

user_score as( -- 计算得分
select 
    user_id,
    6-ntile(5) over(order by R ASC) as R_score,
    ntile(5) over(order by F DESC) as F_score,
    ntile(5) over(order by M DESC) as M_score
from order_count 
)

select 
    user_id,
    R_score,
    F_score,
    M_score,
    case 
        when R_score>=4 and F_score>=4 and M_score>=4 then '重要价值客户'
        when R_score<=2 and F_score>=4 and M_score>=4 then '重要保持客户'
        when R_score>=4 and F_score<=2 and M_score>=4 then '重要深耕客户'
        when R_score <= 2 and F_score <= 2 and M_score >= 4 then '重要挽留客户'
        when R_score >= 4 and F_score <= 2 and M_score <= 2 then '新客户'
        when R_score >= 4 and F_score >= 4 and M_score <= 2 then '潜力客户'
        when R_score <= 2 and F_score >= 4 and M_score <= 2 then '一般客户'
        else '流失用户'
        end as user_segment

from user_score 
相关推荐
Rain5091 小时前
2.4. PostgreSQL 数据库连接与实战指南
前端·数据库·人工智能·后端·postgresql·数据分析
医工交叉实验工坊14 小时前
从GEO数据库下载转录组数据分析步骤
数据挖掘·数据分析
SelectDB16 小时前
2026 SelectDB AI 产品发布会:Agent Native 数据基础设施能力全景发布
数据分析·aigc·agent
Wonderful U1 天前
Python+Django实战|企业客户关系管理系统(CRM):客户档案、跟进记录、商机管理、合同签约、回款追踪、客户分层、数据分析
python·数据分析·django
留白_1 天前
Matplotlib绘图
信息可视化·数据分析·matplotlib
KaMeidebaby1 天前
卡梅德生物技术快报|biotin 生物素标记抗体全流程
前端·人工智能·算法·数据挖掘·数据分析
Asa121381 天前
Nature系列综述|核质病毒门病毒的感染周期
数据分析
l1t1 天前
DeepSeek总结的MariaDB + DuckDB:数据分析的新游乐场——初探新存储引擎
数据分析·mariadb
oscar9991 天前
当电子表格遇上 ChatGPT:像聊天一样做数据分析
chatgpt·数据挖掘·数据分析