【发布时间】:2022-01-23 14:59:58
【问题描述】:
我需要跟踪一位客户如何从一种状态变为另一种状态,并跟踪其在每种状态下的行为。我有下表:
Name - Purchase_date - Customer_category
Susan - 01_01_2021 - A
Susan - 02_01_2021 - B
Susan - 03_01_2021 - B
Susan - 04_01_2021 - B
Susan - 05_01_2021 - B
Susan - 06_01_2021 - A
Susan - 07_01_2021 - A
Susan - 08_01_2021 - B
Susan - 09_01_2021 - B
Susan - 10_01_2021 - B
Susan - 11_01_2021 - C
Susan - 12_01_2021 - D
预期结果是一个包含两行额外的表,category_switch_number 和 occurences_number,其中 category_switch_number 显示了该特定客户的开关 (从 1) 开始计数,occurences_number 显示购买次数,当客户属于此类别时:
Name - Purchase_date - Customer_category - category_switch_number - occurences_number
Susan - 01_01_2021 - A - 1 - 1
Susan - 02_01_2021 - B - 2 - 4
Susan - 03_01_2021 - B - 2 - 4
Susan - 04_01_2021 - B - 2 - 4
Susan - 05_01_2021 - B - 2 - 4
Susan - 06_01_2021 - A - 3 - 2
Susan - 07_01_2021 - A - 3 - 2
Susan - 08_01_2021 - B - 4 - 3
Susan - 09_01_2021 - B - 4 - 3
Susan - 10_01_2021 - B - 4 - 3
Susan - 11_01_2021 - C - 5 - 1
Susan - 12_01_2021 - D - 6 - 1
要复制此表并尝试自己运行查询,请参阅下面的表创建语句:
CREATE TABLE Table1
(`Customer_id` varchar(5), `purchase_time` varchar(10), `Customer_category` varchar(1), `category_switch_number` int, `occurences_number` int)
GO
INSERT INTO Table1
(`Customer_id`, `purchase_time`, `Customer_category`, `category_switch_number`, `occurences_number`)
VALUES
('Susan', '01_01_2021', 'A', 1, 1),
('Susan', '02_01_2021', 'B', 2, 4),
('Susan', '03_01_2021', 'B', 2, 4),
('Susan', '04_01_2021', 'B', 2, 4),
('Susan', '05_01_2021', 'B', 2, 4),
('Susan', '06_01_2021', 'A', 3, 2),
('Susan', '07_01_2021', 'A', 3, 2),
('Susan', '08_01_2021', 'B', 4, 3),
('Susan', '09_01_2021', 'B', 4, 3),
('Susan', '10_01_2021', 'B', 4, 3),
('Susan', '11_01_2021', 'C', 5, 1),
('Susan', '12_01_2021', 'D', 6, 1)
GO
我很抱歉没有分享我尝试过的内容,因为代码示例(我觉得更有用)这篇文章已经很大了,但展示我尝试过的内容会让它变得更大。
【问题讨论】:
标签: sql amazon-redshift window-functions