嗨朋友,即使这段代码对我有用,我也没有让所有客户拥有如下数据。 week_no Customer_ID purchase_yn
201728 87697 1
201728 87697 1
201728 87697 1
201732 87697 1
201733 87697 0
201742 87697 0
201743 87697 1
我想要像下面这样。完成第二次购买的不同周数
客户ID周数
87697 2
答案 0 :(得分:1)
这是使用窗口函数的一种方法
SELECT customerID,
PurcahseYnCount
FROM (SELECT *,
PurcahseYnCount = DENSE_RANK()OVER(partition BY customerID ORDER BY Week_No),
PurcahseYnSum = Sum(PurcahseYn) OVER(partition BY customerID ORDER BY Week_No)
FROM Yourtable) a
WHERE PurcahseYnSum = 2
对于旧版本,
SELECT customerID,
PurcahseYnCount
FROM (SELECT *,
PurcahseYnCount = Dense_Rank()OVER(partition BY customerID ORDER BY Week_No),
PurcahseYnSum = (select Sum(PurcahseYn) from Yourtable b where a.customerID = b.customerID and a.Week_No >= b.Week_No)
FROM Yourtable a) a
WHERE PurcahseYnSum = 2;
答案 1 :(得分:0)
这适合我。
SELECT customer_id,
min(PurcahseYnCount) NOofweeks
FROM (SELECT customer_id,
PurcahseYnCount = DENSE_RANK() OVER(partition BY cusomer_id ORDER BY survey_id),
PurcahseYnSum = (select Sum(purchase_yn) from survey_response b where a.customer_id = b.customer_id and a.survey_id >= b.survey_id)
FROM survey_response a) a
WHERE PurcahseYnSum = 2
group by customer_id
order by customer_id