-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathVIEW-vCustomerSegmentation.sql
38 lines (36 loc) · 1 KB
/
VIEW-vCustomerSegmentation.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
-- =============================================
-- Create View for Customer Segmentation:
-- Recency, Frequency, Monetary
-- =============================================
USE AdventureWorks2019
GO
IF object_id(N'dbo.vCustomerRFMSegmentation', 'V') IS NOT NULL
DROP VIEW dbo.vCustomerRFMSegmentation
GO
CREATE VIEW dbo.vCustomerRFMSegmentation AS
WITH CusSales AS (
SELECT CustomerID
, FullName
, CAST(NumOfTxn / ActiveWeeks AS FLOAT) AS WeeklyTxnNum
, TotalSpending / ActiveWeeks AS WeeklySpending
, DaysSinceLastTxn
FROM vCustomerSalesSummary
),
CusRank AS (
SELECT CusSales.*
--CustomerID
-- , FullName
, NTILE(4) OVER (ORDER BY DaysSinceLastTxn) AS RankRecency
, NTILE(4) OVER (ORDER BY WeeklyTxnNum DESC) AS RankWeeklyTxnNum
, NTILE(4) OVER (ORDER BY WeeklySpending DESC) AS RankWeeklySpending
FROM CusSales
),
CusRFM AS (
SELECT CusRank.*
, CONCAT(RankRecency, RankWeeklyTxnNum, RankWeeklySpending) AS RFM
, RankRecency + RankWeeklyTxnNum + RankWeeklySpending AS RFMSum
FROM CusRank
)
SELECT *
FROM CusRFM
GO