每个客户在下一次购买之前完成的调查没有进行

时间:2018-01-16 04:09:15

标签: sql sql-server

嗨朋友,即使这段代码对我有用,我也没有让所有客户拥有如下数据。 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

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

Demo

对于旧版本,

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