码迷,mamicode.com
首页 > 数据库 > 详细

MySQL建立RFM模型

时间:2020-06-12 18:39:28      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:ase   消费   pass   charge   tac   nec   contain   and   提交   

1.数据来源

charge_record表数据

提取代码如下:

# coding=utf-8
import pymysql

# 原数据库链接
db1 = pymysql.connect(
host=‘***‘,
port=3306, user=‘***‘,
passwd=‘***‘,
db=‘***‘,
charset=‘utf8‘)
cursor1 = db1.cursor()
# 定义查询语句
len1 = cursor1.execute(‘SELECT uid,amount,update_time FROM charge_record WHERE buss_type=0 AND charge_status=2 AND charge_prod_id IS NOT NULL‘)

# 迁移数据库链接
db2 = pymysql.connect(
host=‘127.0.0.1‘,
port=3306, user=‘root‘,
passwd=‘123456‘,
db=‘test‘,
charset=‘utf8‘)
cursor2 = db2.cursor()
# 批量插入语句
sql = ‘INSERT INTO charge_record(uid,amount,update_time) VALUE(%s, %s,%s)‘

# 导入全部数据
data2 = cursor1.fetchall()
cursor2.executemany(sql, data2)

# 提交到数据库
db2.commit()

# 关闭数据库连接
db1.close()
db2.close()

2.RFM值计算(基于MySQL)

-- 计算RFM的值

-- R值的计算

-- R值(近度)= (当前时间-最后一次消费时间)

SELECT uid,max(update_time) 最后一次消费时间,datediff("2020-05-15",max(update_time)) R值 FROM charge_record GROUP BY uid;

-- F值的计算

-- F值(频度)=(客户购买的频次)

SELECT uid,count(distinct(update_time)) F值 FROM charge_record GROUP BY uid;

-- M值的计算

-- M值(额度) = (一段时间的总额或平均额)

SELECT uid,count(distinct(update_time)) F值,sum(amount) 总额,round(sum(amount)/count(distinct(update_time)),2) M值 FROM charge_record GROUP BY uid;

-- 汇总计算

SELECT uid,datediff("2020-05-15",max(update_time)) R值,

count(distinct(update_time)) F值,round(sum(amount)/count(distinct(update_time)),2) M值 

FROM charge_record GROUP BY uid;

技术图片

MySQL建立RFM模型

标签:ase   消费   pass   charge   tac   nec   contain   and   提交   

原文地址:https://www.cnblogs.com/wanyuan/p/13106722.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!