1. 视图的定义
视图(View)是一种虚拟的表,其结构和数据来自于一个或多个基本表,可以被当作普通表一样进行查询操作,但实际上不存储任何数据。在数据库中,视图可以被看作是一种数据访问的方式,它可以隐藏底层表的复杂性,提供简洁易懂的数据访问接口,方便用户进行查询、分析和报表等操作。
视图的作用
视图的作用主要有以下几个方面:
简化查询操作:通过创建视图,可以将多个表的数据组合成一个逻辑上的整体,减少了用户在查询时需要编写复杂的 SQL 语句。
隐藏复杂性:数据库中有时候存在多个关联表,为了查询这些表的数据需要编写复杂的 SQL 语句,使用视图可以将这些关联表的查询逻辑隐藏起来,简化了用户对数据库的操作。
提高数据安全性:视图可以对底层表进行过滤和限制访问,可以对用户提供必要的访问权限,可以保护数据的隐私和安全。
减少数据冗余:有时候需要将数据多次查询,这样容易导致数据冗余,使用视图可以避免这种情况的发生,同时可以减少网络流量和提高数据访问效率。
2. 原数据
R : Recency. F: Frequency M :Montary
3. 示例
3.1 创建视图存储 R、F、M的最大最小值
创建视图存储R、F、M的最大最小值,为指标的离散提供数据
create view RFM_maxmin24(maxR,minR,maxF,minF,maxM,minM)
as
SELECT MAX(Recency) , MIN(Recency), MAX(Frequency), MIN(Frequency), MAX(Monetary), MIN(Monetary)
FROM customers1997
视图
3.2 创建视图计算对R、F、M进行离散化
注意Recency是越小越好指标,公式同F和M有所不同
计算RFM的各项分值:
★ R ,距离当前日期越近,得分越高,最该高5分,最低1分
★ F ,交易频率越高,得分越高,最该高5分,最低1分
★ M ,交易金额越高,得分越高,最该高5分,最低1分
create view Customer_RFM
as
SELECT customer_id, Recency, Frequency, Monetary,
CASE
WHEN (maxR - Recency) <= (maxR - minR)/ 5 THEN 1
WHEN (maxR - Recency) <= 2 * (maxR - minR)/ 5 THEN 2
WHEN (maxR - Recency) <= 3 * (maxR - minR)/ 5 THEN 3
WHEN (maxR - Recency) <= 4 * (maxR - minR)/ 5 THEN 4
WHEN (maxR - Recency) <= 5 * (maxR - minR) / 5 THEN 5
ELSE NULL
END AS R,
CASE
WHEN (maxF - Frequency) <= (maxF - minF)/ 5 THEN 5
WHEN (maxF - Frequency) <= 2 * (maxF - minF) / 5 THEN 4
WHEN (maxF - Frequency) <= 3 * (maxF - minF) / 5 THEN 3
WHEN (maxF - Frequency) <= 4 * (maxF - minF) / 5 THEN 2
WHEN (maxF - Frequency) <= 5 * (maxF - minF) / 5 THEN 1
ELSE NULL
END AS F,
CASE
WHEN (maxM - Monetary) <= (maxM - minM) / 5 THEN 5
WHEN (maxM - Monetary) <= 2 * (maxM - minM)/ 5 THEN 4
WHEN (maxM - Monetary) <= 3 * (maxM - minM)/ 5 THEN 3
WHEN (maxM - Monetary) <= 4 * (maxM - minM)/ 5 THEN 2
WHEN (maxM - Monetary) <= 5 * (maxM - minM) / 5 THEN 1
ELSE NULL
END AS M
FROM customers1997 CROSS JOIN rfm_maxmin24
结果:
3.3 建立客户评分表
CREATE TABLE Customer_Value AS
SELECT customer_id, Recency, Frequency,Monetary, R, F, M,
R * 5 + F * 3 + M * 2 as value
FROM customer_rfm