SQL 使用CASE WHEN实现RFM参数—F(Frequency)

本文介绍了如何使用SQL来计算RFM模型中的F值,即客户交易频率。在2022年5月1日的电商促销活动中,通过创建临时表格,对历史交易数据进行COUNT聚合,区分不同购买频次的顾客群体。最终,利用CASE WHEN语句将F值分为'1'(购买一次)和'2+'(购买两次及以上),并统计了各组的顾客数量,为分析客户价值和活跃度提供数据支持。

SQL 使用CASE WHEN实现RFM参数—F(Frequency)

前言:

博主目前从事的是BA数据分析师、在实际工作中需要问其他部门的同事提供SQL需求,在最近的工作中大量用到SQL搭建RFM模型的案例,其中分别涉及到参数R,F和M的参数实现。因此,以我实际工作遇到的问题进行总结。

参数F的概念:

F值:客户在最近一段时间内交易次数。(Frequency)
基于交易频率次数,交易频率越高,所对应的客户价值就越高。反映客户交易活跃度。

使用SQL实现F值
案例如下:
2022年5月1日,某电商平台进行了一次促销活动,需要查看在历史所有时间段顾客购买频次情况,即不同F的人数分布。F值如下:
1、F1
2、F2+

1、创建表格(以临时表格为例)

在这里插入图片描述

2、查看原始表格

在这里插入图片描述

3、查看每个顾客对应的购买频次Frequency

在这里插入图片描述
注意:查看购买频次可以对具体的下单时间进行COUNT聚合。上述创建的临时表格在同意而顾客在date上可能存在重复。但在实际的数据库中,每笔订单都会有具体的时间区分或者通过订单的代码进行区分,具体还要视情况而定。因此,这里大家可以稍微思考一下。

4、按照要求对Fre进行分组(F1,F2+)

在这里插入图片描述
注:在CRM系统中,我们较关注一次客和复购客的购买情况,因此将Fre分成1和2+即可。其次对两个分组的人进行分组聚合,查看一次客和复购客对应的顾客数量。
完整代码如下:

SELECT * FROM r;

DROP TABLE IF EXISTS temp_LD;
CREATE TEMPORARY TABLE temp_LD AS
SELECT cus,COUNT(DISTINCT date) AS Fre FROM r
GROUP BY cus;

SELECT * FROM temp_LD;

DROP TABLE IF EXISTS temp_Fre;
CREATE TEMPORARY TABLE temp_Fre AS
SELECT Fre,CASE WHEN FRE=1 THEN '1' WHEN FRE>1 THEN '2+' END AS Fre_Group 
FROM temp_LD;

SELECT Fre_Group,COUNT(DISTINCT Fre) AS cus_num FROM temp_Fre
GROUP BY Fre_Group;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜的乄第七章

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值