我正在尝试按日期和客户名称推导重新订购的计算。输出以“周”为单位。如果也可以轻松地在“天”和“月”之间切换。
例如。 “万豪酒店的订单间隔时间平均为 xx 周,洛杉矶万豪酒店的订单间隔时间平均为 xx 周”。
还需要能够计算“今天的最后订单”。因此,例如,如果客户的最后一个订单是“2023 年 1 月 1 日”并且他们再也没有订购过,我想计算从那天到今天之间的时间(current_timestamp)
本质上是一个 Datediff,但在考虑客户名称和客户名称子项时无法使其正常工作。
订购日期 | 客户姓名 | 客户_名称_子 |
---|---|---|
2022 年 5 月 20 日 | 万豪 | 洛杉矶 |
2022 年 5 月 20 日 | 万豪 | 纽约 |
2022 年 5 月 26 日 | 万豪 | 洛杉矶 |
2022 年 5 月 27 日 | 万豪 | 迈阿密 |
2022 年 6 月 10 日 | 万豪 | 洛杉矶 |
2022 年 6 月 16 日 | 万豪 | 迈阿密 |
2022 年 6 月 22 日 | 万豪 | 洛杉矶 |
2022 年 6 月 29 日 | 万豪 | 迈阿密 |
2022 年 7 月 6 日 | 万豪 | 洛杉矶 |
2022 年 7 月 8 日 | 万豪 | 迈阿密 |
2022 年 7 月 13 日 | 万豪 | 迈阿密 |
2022 年 7 月 20 日 | 万豪 | 迈阿密 |
2022 年 7 月 28 日 | 万豪 | 迈阿密 |
2022 年 8 月 3 日 | 万豪 | 洛杉矶 |
2022 年 8 月 30 日 | 万豪 | 洛杉矶 |
2022 年 9 月 14 日 | 万豪 | 洛杉矶 |
2022年10月18日 | 万豪 | 洛杉矶 |
2022年12月22日 | 万豪 | 洛杉矶 |
2023 年 1 月 9 日 | 万豪 | 洛杉矶 |
使用的方法是 Dense_Rank 函数和 PARTITION with Lookup:
Dense_Rank:
这会根据客户价值给出每个订单日期的排名数字,以了解最先和最后出现的订单
{PARTITION [客户名称]:{ ORDERBY [订单日期] ASC:RANK_DENSE()}}
^ 标记为 Order_Rank_Customer 的列
分区/查找:
这使用 Dense_Rank 作为参考来了解客户的第一个/最后一个日期。这会带回特定客户的先前订单,以生成我标记为“先前订单日期”的列
{ 分区 [客户名称]: { ORDERBY [Order_Rank_Customer] DESC: LOOKUP([订单日期],1)}}
自上次订单以来的天数:
这是一个带有 ABS(绝对值)的简单 DATEDIFF,因为它会生成负数
ABS(DATEDIFF('天',[订单日期],[最后重新订购日期客户]))