我有一个交易表,其中包含所有客户的购买历史记录。我想知道在一周(7天)内购买的顾客数量(使用Min(Bill_Date))。
Customer_Id Bill_Date
1 2020-01-23
1 2021-01-28
2 2020-09-01
2 2021-09-07
3 2020-03-01因此,预期产出:
购买周年纪念日一周内购买的顾客编号为:3
我在这一步之后被困住了
with CTE As
(Select customer_id,Bill_Date from
(Select Customer_id,Bill_Date,Dense_Rank() over(partition by Customer_id order by Bill_Date)r1 from CDM_Bill_Details)t1
where t1.r1=1
group by customer_id)发布于 2022-03-22 06:05:40
我会在这里使用存在逻辑:
WITH cte AS (
SELECT *, MIN(Bill_Date) OVER (PARTITION BY Customer_Id) Min_Bill_Date
FROM CDM_Bill_Details
)
SELECT COUNT(DISTINCT Customer_Id) AS cnt
FROM
(
SELECT Customer_Id
FROM cte
WHERE Bill_Date > Min_Bill_Date AND
DATEDIFF(Bill_Date - interval 1 year, Min_Bill_Date) <= 7
) t;上述WHERE条款通过减去一年,将第一个票据日期与第一个票据日期进行比较,然后断言此后续购买是从第一次购买起的正负7天。
https://stackoverflow.com/questions/71567471
复制相似问题